web-dev-qa-db-fra.com

Est-il préférable de zoomer sur les fenêtres dans Vim que ZoomWin?

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

38
tomekfranek

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 horizontales
  • fermez la ou les autres fenêtres et passez ainsi en plein écran. Fractionner et ré-ouvrir à partir du tampon pour restaurer
  • utilisez tmux si disponible et exécutez plusieurs instances de vim, c-b-z pour basculer entre le plein écran pour le volet actuel

J'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.

57
WP2Static.com

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>
31
BenC

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

13
Ingo Karkat

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
3
Hanhong Xue

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>
1
JESii