Я хорошо понимаю ваше намерение, я тоже исключительно использую буферы и иногда делаю разделение, если это необходимо.
ниже отрывок из моего .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
.