Скасувати розділене вікно у Vim


231

Я розділив вікна по горизонталі. Тепер, як я можу повернутися до звичайного режиму, тобто не розділене вікно лише одне вікно, не скасовуючи всі мої відкриті вікна. У мене 5 і не хочу "виходити", просто хочу вийти з розділеного вікна.


7
Будь-який шанс, що ви могли б прийняти відповідь eckes? Це набагато корисніше, ніж прийнятий на даний момент ...
Кайл Странд

Відповіді:


288

Натисніть Control+ w, а потім натисніть, qщоб закрити кожне вікно за раз.

Оновлення : також розгляньте відповідь на eckes, яка може бути кориснішою для вас, включаючи :on (читайте нижче), якщо ви не хочете робити це по одному вікну за раз.


9
Я згоден, але ОП не вибрав відповіді на екеї, і я не можу сам це змінити.
Warren P

4
Я майже впевнений, що це правильна відповідь. Це зробило це для мене, і якщо ви подивитесь на запитання ОП, він не хотів закривати свої інші відкриті вікна, просто нещодавно розділене.
Зак

1
Не допомагає, якщо показаний буфер містить незбережені зміни. Це говорить, що я повинен перекрити! але я не знаю як. Як новачок я зараз загубився.
musiKk

2
тому збережіть його. Ця відповідь вам не потрібна, якщо ви не знаєте, як зберегти. Можливо, у вас навіть немає дозволу на збереження.
Warren P

1
Походить від традиційних редакторів GUI, це досить дивна концепція. hiddenЗдається, налаштування допомагає. Хоча, що я мав на увазі, як ти додаєш! до ярлика? Це "Cw! Q", "Cw q!", "! Cw q", "C-! W q"? Я думаю, що жоден із них, але я вже забув, як створити нові буфери, тому це вправа для читача.
musiKk

265

Щоб закрити всі розколи, я зазвичай помістити курсор в вікні , яке повинно стати на -ly видимого , а потім зробити :onщо робить поточне вікно в на -ly видимого вікна. Приємно мнемонічно пам’ятати.


Правка: :help :on показала мені, що ці команди однакові:

Кожне з цих чотирьох закриває всі вікна, крім активного.


8
+1 Якщо інше вікно містить будь-які непередбачувані зміни, воно :onвідповість E445: Other window contains changesі не закриє інше вікно. Наприклад, я зазвичай створюю нове вікно і зачитую в ньому файл, з якого я хотів би вирватися. У цьому випадку Вім вважає, що в іншому вікні є неписані зміни. У такому випадку використовуйте :on!для примусового закриття.
Сабунку

61

щоб закрити всі вікна, окрім поточного:

CTRL+ w,o

Тобто спочатку CTRL+, wа потім o.


3
Також мені цікаво, чи є спосіб CTRL+W oвипадково скасувати введений текст.
Паоло

30

Дві альтернативи для закриття поточного вікна є ZZі ZQ, відповідно, зберігають, а не зберігають зміни у відображеному буфері.


10
Це, безумовно, "vim шлях", crtl + wo здається таким emacs.
Енді Хейден

Мені не подобається, Zбо я німець. (Спойлер: Розкладка клавіатури, якщо ви часто перемикаєтесь між налаштуваннями DE / EN)
Тіно

6

Команда: сховати приховає поточне зосереджене вікно. Я думаю, що це функціонал, який ви шукаєте.

Для навігації між вікнами введіть Ctrl + w, а потім клавішу навігації (h, j, k, l або клавіші зі стрілками)

Для отримання додаткової інформації перспективи :help windowі :help hideв Vim.


Це чудово. Chrome (із плагіном ssh) перехоплює <CW> як "закриту вкладку", ефективно вимикаючи всі віконні команди <cw> vim. Мати альтернативу корисно.
узда

6

З :help opening-window(пошук "Закриття вікна" - /Closing a window)

  • :q[uit]закрийте поточне вікно та буфер. Якщо це останнє вікно, воно також вийде з vim
  • :bd[elete] вивантажте поточний буфер і закрийте поточне вікно
  • :qa[all]або :quita[ll]закриє всі буфери та вікна та вихід із vim ( :qa!примусово без збереження змін)
  • :clo[se]закрийте поточне вікно, але тримайте буфер відкритим. Якщо є лише одне вікно, ця команда не працює
  • :hid[e]сховати буфер у поточному вікні (Детальніше на :help hidden)
  • :on[ly] закрийте всі інші вікна, але залиште всі буфери відкритими

5

Я виявив, що ctrl+ wдо вікна, яке ви хочете закрити, тоді просто робіть :q. Це працює для мене.


Це справді повторювана відповідь, дублікат чогось, що сидить там 3+ років.
Warren P

@WarrenP не схожий на копію. Я не знайшов іншої відповіді, яка згадує ^W^W:qяк можливе рішення, тому позбудьтеся розколу. Зауважте, що, ^W to the window you want to closeмабуть, має на увазі багаторазове використання ^W^Wдля переходу до вікна, яке ви хочете закрити ..
Tino

Моє ліжко. Інший - ^ W тоді o
Warren P

2

Я добре розумію, що ви маєте намір, я також використовую буфери виключно, а іноді і розбиваю, якщо потрібно.

нижче - уривок мого .vimrc

" disable macro, since not used in 90+% use cases
map q <Nop>
" q,  close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window    -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200   " let vim wait less for your typing!

Що досить добре відповідає моєму робочому процесу

Якщо qбуло натиснуто

  • приховати поточне вікно, якщо відкрито кілька вікон, інакше спробуйте вийти з vim.

якщо qoйого натискали,

  • закрити всі інші вікна, без ефекту, якщо тільки одне вікно.

Звичайно, ви можете перетворити цю безладну частину у функцію , наприклад

func! Hide_cur_window_or_quit_vim()
    if winnr('$') > 1
        hide
    else
        silent! exec 'q'
    endif
endfunc
nnoremap q :call Hide_cur_window_or_quit_vim()<CR>

Sidenote : Я перепризначити q, так як я не використовую макрос для редагування, замість того, щоб використовувати :s, :g, :vі зовнішні команди обробки тексту , якщо це необхідно, наприклад, :'{,'}!awk 'some_programm'або використання :norm! normal-command-here.


1

Як і інші, сказані перед способом зробити це - натиснути ctrl+ wі потім o. Це "максимізує" поточне вікно, закриваючи інші. Якщо ви хочете мати можливість "не максимізувати", для цього є плагін ZoomWin . Інакше вам доведеться відтворити налаштування вікна з нуля.


0

Гаразд, я просто відключився і приєднався до екранного сеансу, і я повернувся до звичайного екрану, якого я хотів


Це не залишає vimрежиму розділеного вікна, це просто залишає screenрежим розділеної панелі - що можна легко помилитися, тому, можливо, теж інші. До речі, ця функція екрану мені дратує, отже, тепер я за замовчуванням tmuxдає змогу повторного вкладення з усіма розбиттями.
Тіно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.