Je comprends bien votre intention, j'utilise exclusivement des tampons et je fais de temps en temps une division si nécessaire.
ci-dessous est un extrait de mon .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!
Qui correspond assez bien à mon flux de travail
Si a q
été pressé
- masquer la fenêtre actuelle si plusieurs fenêtres sont ouvertes, sinon essayez de quitter vim.
si a qo
été pressé,
- ferme toutes les autres fenêtres, aucun effet si une seule fenêtre.
Bien sûr, vous pouvez envelopper cette partie désordonnée dans une fonction , par exemple
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 : Je remap q
, puisque je ne pas utiliser de macro pour l' édition, utilisez plutôt :s
, :g
, :v
et commande de traitement de texte externe en cas de besoin, par exemple, :'{,'}!awk 'some_programm'
ou l' utilisation :norm! normal-command-here
.