2012-11-02 10 views
29

Ho usato ZoomWin: https://github.com/vim-scripts/ZoomWin per passare da una a più finestre in Vim. Ma questo plugin ha un grosso problema. Quando sto cercando di ripristinare più finestre (split verticale), c'è un ritardo di circa 2-4 secondi.Il modo migliore per ingrandire le finestre in Vim rispetto a ZoomWin?

Sai come evitare quel ritardo? O forse è la soluzione migliore per questo.

Versione 25 problema risolto: https://github.com/regedarek/ZoomWin

+0

Il ritardo rende zoomwin un no-go per me. – arcseldon

+0

La risposta di BenC sotto ha il perf. necessario. – arcseldon

risposta

42

Provo ad utilizzare vim senza alcun plugin in quanto non voglio fare affidamento su di essi quando lavoro su un altro sistema. Venendo su questo stesso problema ora, posso proporre alcuni 'modi migliori' (modi alternativi) come richiesto dal PO:

  • c-w-| di avere la finestra prendere in consegna (se si utilizza vsplits). c-w-= da ripristinare. c-w-_ per le divisioni orizzontali
  • chiudi l'altra finestra (o le finestre), rendendo così l'attuale a schermo intero. Split e ri-aperto dal buffer per ripristinare
  • uso tmux se disponibile ed eseguire più istanze di vim, c-b-z per passare da schermo intero per il riquadro corrente

Ho elencato questi in ordine di mia praticità percepita. L'esperienza sarà ovviamente migliore con un plugin dedicato, ma non è sempre un'opzione.

12

La ZoomWin versione 24 ha introdotto risparmio di variabili di finestra-locale. Quando ho provato, ho trovato le prestazioni inaccettabili, probabilmente a causa dei vari altri plugin che ho installato e che installano vari gestori di eventi.

ho riportato i miei problemi per l'autore del plugin e lui mi ha risposto che

v25a del ZoomWin ha il g: zoomwin_localoptlist e cose noautocmd.

Quindi, o cercare di ritornare alla versione 23 (che ho fatto), o provare l'ultima versione con l'impostazione menzionato spento da http://drchip.org/astronaut/vim/index.html#ZOOMWIN

+3

Grazie! Versione 25 Funziona eccellente. Ho appena inviato la versione più recente al mio account Github. https://github.com/regedarek/ZoomWin – tomekfranek

+0

Sì, ho appena provato con v25d e, sebbene non veloce come la v23, il ritardo sul mio vecchio portatile è di ~ 200 ms, che penso di poter convivere. –

+0

L'autore originale non lo mantiene più? Hai il suo permesso? –

28

A simple alternative (che può essere sufficiente a seconda di che cosa avete bisogno):

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

Questo è abbastanza buono in realtà!Si noti che potrebbe essere necessario rimappare '' a qualcos'altro se si sta già utilizzando questa combinazione con tmux =) – Abdo

+1

@Abdo: infatti, l'ho mappato a '' poiché utilizzo '' per tmux ;-) – BenC

+0

Haha, bello! :-) L'ho mappato a ' E' da quando ho' cmd shift e' come scorciatoia per espandere windows nel mio OSX =) – Abdo

2

Un altro modo semplice è :tab split. Il lato positivo è che non cambia il layout della scheda corrente. Il rovescio della medaglia è che richiede Vim 7.0 o superiore per il supporto delle schede.

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 
Problemi correlati