Отмена разделенного окна в Vim - PullRequest
204 голосов
/ 26 января 2011

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

Ответы [ 10 ]

264 голосов
/ 26 января 2011

Нажмите Control + w , затем нажмите q , чтобы закрыть каждое окно за раз.

Обновление : также рассмотрите ответ Экс, который может быть более полезным для вас, включая :on (см. Ниже), если вы не хотите делать это по одному окну за раз.

246 голосов
/ 27 января 2011

Чтобы закрыть все разбиения, я обычно помещаю курсор в окно, которое должно быть на -видимом, и затем делаю :on, что делает текущее окно на -видимое окно Хорошая мнемоника для запоминания.


Редактировать: :help :on показал мне, что эти команды одинаковы:

Каждое из этих четырех закрывает все окна, кроме активного.

54 голосов
/ 27 января 2011

, чтобы закрыть все окна, кроме текущего, используйте:

CTRL + w , o

То есть сначала CTRL + w , а затем o .

26 голосов
/ 26 января 2011

Два варианта закрытия текущего окна: ZZ и ZQ, которые соответственно сохранят и не сохранят изменения в отображаемом буфере.

6 голосов
/ 26 января 2011

Команда: скрыть скрытое в данный момент окно.Я думаю, что это та функция, которую вы ищете.

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

Для получения дополнительной информации запустите :help window и :help hide в vim.

2 голосов
/ 07 февраля 2019

С :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] закрыть все остальные окна, но оставить все буферыоткрыть
1 голос
/ 02 июля 2017

Я хорошо понимаю ваше намерение, я тоже исключительно использую буферы и иногда делаю разделение, если это необходимо.

ниже отрывок из моего .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 голос
/ 10 января 2014

Я обнаружил, что ctrl + w к окну, которое вы хотите закрыть, затем просто выполните : q .Это работает для меня.

1 голос
/ 27 января 2011

Точно так же, как другие говорили, прежде чем сделать это, нажмите ctrl + w и затем o . Это «максимизирует» текущее окно, закрывая остальные. Если вы хотите «развернуть» его, для этого есть плагин ZoomWin . В противном случае вам придется заново создавать настройки окна с нуля.

0 голосов
/ 26 января 2011

Хорошо, я только что отсоединился и снова подключился к сеансу экрана, и я вернулся к нормальному экрану, который я хотел

...