J'avais l'habitude d'utiliser ZoomWin: https://github.com/vim-scripts/ZoomWin pour basculer entre une et plusieurs fenêtres dans Vim. Mais ce plugin a un gros problème. Lorsque j'essaie de restaurer plusieurs fenêtres (fractionnement vertical), le délai est d'environ 2 à 4 secondes.
Savez-vous comment éviter ce décalage? Ou peut-être une meilleure solution pour cela.
Problème résolu de la version 25: https://github.com/regedarek/ZoomWin
J'essaie d'utiliser vim sans plug-in, car je ne veux pas compter sur eux lorsque je travaille sur un autre système. En ce qui concerne maintenant le même problème, je peux proposer quelques "meilleures façons" (alternatives) comme demandé par le PO:
c-w-|
pour que la fenêtre prenne le dessus (si vous utilisez vsplits). c-w-=
à restaurer. c-w-_
pour les divisions horizontalestmux
si disponible et exécutez plusieurs instances de vim, c-b-z
pour basculer entre le plein écran pour le volet actuelJ'ai énuméré ceux-ci dans l'ordre de mon sens pratique. L’expérience sera bien sûr meilleure avec un plugin dédié, mais ce n’est pas toujours une option.
A alternative simple (qui peut suffire selon vos besoins):
" Zoom / Restore window.
function! s:ZoomToggle() abort
if exists('t:zoomed') && t:zoomed
execute t:zoom_winrestcmd
let t:zoomed = 0
else
let t:zoom_winrestcmd = winrestcmd()
resize
vertical resize
let t:zoomed = 1
endif
endfunction
command! ZoomToggle call s:ZoomToggle()
nnoremap <silent> <C-A> :ZoomToggle<CR>
La version 24 de ZoomWin a introduit l’enregistrement des variables locales à la fenêtre. Lorsque j’ai essayé, j’ai trouvé les performances inacceptables, probablement à cause des divers autres plug-ins que j’ai installés et qui installent divers gestionnaires d’événements.
J'ai signalé mes problèmes à l'auteur du plugin et il a répondu que
la v25a de ZoomWin a les options g: zoomwin_localoptlist et noautocmd.
Donc, essayez de revenir à la version 23 (ce que j’ai fait), ou essayez la dernière version avec le paramètre mentionné désactivé depuis http://drchip.org/astronaut/vim/index.html#ZOOMWIN
Un autre moyen simple est :tab split
. L'avantage est que cela ne change pas la disposition de l'onglet actuel. L'inconvénient est qu'il nécessite Vim 7.0 ou une version ultérieure pour la prise en charge des onglets.
nnoremap <leader>t :call TabToggle()<cr>
function! TabToggle()
if tabpagewinnr(tabpagenr(), '$') > 1
" Zoom in when this tab has more than one window
tab split
elseif tabpagenr('$') > 1
" Zoom out when this tab is not the last tab
if tabpagenr() < tabpagenr('$')
tabclose
tabprevious
else
tabclose
endif
endif
endfunction
J'ai une autre méthode que j'ai utilisée pendant des années. me permet de "zoomer" sur la mémoire tampon actuelle vers un nouvel onglet, puis de la refermer rapidement afin que je puisse revenir à ma mise en page originale à plusieurs fenêtres:
" "Zoom" a split window into a tab and/or close it
nmap <Leader>,zo :tabnew %<CR>
nmap <Leader>,zc :tabclose<CR>