Ich verstehe Ihre Absicht gut, ich verwende ausschließlich Puffer und teile sie gelegentlich auf, wenn nötig.
unten ist ein Auszug von mir .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!
Das passt ganz gut zu meinem Workflow
Wenn q
gedrückt wurde
- aktuelles Fenster ausblenden, wenn mehrere Fenster geöffnet sind, andernfalls versuchen Sie, vim zu beenden.
wenn qo
gedrückt wurde,
- Alle anderen Fenster schließen, keine Auswirkung, wenn nur ein Fenster.
Natürlich können Sie diesen unordentlichen Teil in eine Funktion einwickeln , z
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>
Nebenbei bemerkt : Ich remap q
, da ich nicht verwenden Makro für die Bearbeitung, verwenden Sie stattdessen :s
, :g
, :v
, und externen Textverarbeitungsbefehl , wenn nötig, zum Beispiel :'{,'}!awk 'some_programm'
, oder Verwendung :norm! normal-command-here
.