vim zoom vim-plugin

¿Es una mejor forma de acercar ventanas en Vim que ZoomWin?



vim-plugin (4)

Intento usar vim sin complementos ya que no quiero confiar en ellos cuando trabajo en otro sistema. Al abordar este mismo tema ahora, puedo proponer algunas "mejores formas" (formas alternativas) según lo solicitado por el PO:

  • cw-| para que la ventana se haga cargo (si se usan vsplits). cw-= para restaurar. cw-_ para divisiones horizontales
  • cierre las otras ventanas, haciendo de esta manera una pantalla completa. Dividir y volver a abrir desde el búfer para restaurar
  • use tmux si está disponible y ejecute varias instancias de vim, cbz para alternar entre pantalla completa para el panel actual

Los he enumerado en orden de mi sentido práctico percibido. Por supuesto, la experiencia será mejor con un complemento dedicado, pero eso no siempre es una opción.

Solía ​​usar ZoomWin: https://github.com/vim-scripts/ZoomWin para alternar entre una y varias ventanas en Vim. Pero este complemento tiene un gran problema. Cuando trato de restaurar varias ventanas (división vertical) hay una demora de aproximadamente 2-4 segundos.

¿Sabes cómo evitar ese retraso? O tal vez es una mejor solución para eso.

La versión 25 resolvió el problema: https://github.com/regedarek/ZoomWin


La versión 24 de ZoomWin introdujo el guardado de variables locales de ventana. Cuando lo probé, encontré el rendimiento inaceptable, probablemente debido a los otros complementos que he instalado y que instalan varios controladores de eventos.

He informado sobre mis problemas al autor del complemento y me respondió que

v25a de ZoomWin tiene g: zoomwin_localoptlist y cosas noautocmd.

Por lo tanto, intente volver a la versión 23 (lo cual hice), o pruebe la última versión con la configuración mencionada desactivada de http://drchip.org/astronaut/vim/index.html#ZOOMWIN


Otra forma simple es :tab split . Lo bueno es que no cambia el diseño de la pestaña actual. La desventaja es que requiere Vim 7.0 o superior para el soporte de pestañas.

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


Una alternativa simple (que puede ser suficiente dependiendo de lo que necesite):

" 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>