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