2011-01-26 12 views
155

Ho diviso le finestre orizzontalmente. Ora come posso tornare alla modalità normale, cioè senza finestra divisa solo una finestra senza cancellare tutte le mie finestre aperte. Ho 5 e non voglio "uscire", voglio solo uscire dalla finestra divisa.Annulla finestra divisa in Vim

+6

Qualche possibilità che tu possa accettare la risposta di eckes? È molto più utile di quello attualmente accettato ... –

risposta

210

Press controllo + w, poi ha colpito q per chiudere ogni finestra alla volta.

Aggiornamento: Considera anche Eckes risposta che può essere più utile a voi, coinvolgendo :on (leggi sotto) se non si vuole fare una finestra alla volta.

+0

Se hai 5 splitq aperti, non sono sicuro che la tua soluzione sarebbe davvero d'aiuto. –

+9

Sono d'accordo ma l'OP non ha scelto la risposta di eckes e non posso cambiarla da sola. –

+4

Sono abbastanza sicuro che questa sia la risposta corretta. Questo lo ha fatto per me e se si guarda alla domanda dell'op, non voleva chiudere le sue altre finestre aperte, solo quella recentemente divisa. – Zak

0

Ok ho appena distaccato e riattaccare alla sessione schermo e sono tornato alla schermata normale volevo

5

Il comando: nascondere nasconderà la finestra attualmente focalizzata. Penso che questa sia la funzionalità che stai cercando.

Per navigare tra le finestre digitare Ctrl + w seguito da un tasto di navigazione (h, j, k, l, o tasti freccia)

Per ulteriori informazioni eseguire :help window e :help hide in vim.

+0

Questo è fantastico. Chrome (con il plug-in ssh) intercetta come "chiudi scheda" disabilitando in modo efficace tutti i comandi della finestra di di vim. Avere un'alternativa è utile. – rein

19

Due alternative per chiudere la finestra corrente sono ZZ e ZQ, che rispettivamente salveranno e non salveranno le modifiche al buffer visualizzato.

+4

Questo è sicuramente il "vim way", crtl + w o sembra così emacs. –

47

per chiudere tutte le finestre, ma quella attuale uso:

CTRL + w, o

Cioè, prima CTRL + w e poi o.

+1

Mi chiedo anche se ci sia un modo per annullare un 'CTRL + W o' digitato accidentalmente. – Paolo

204

Per chiudere tutti i gruppi, di solito posto il cursore nella finestra che sarà il su un ly visibile e quindi fare :on che rende la finestra corrente su finestra ly visibile. Bel mnemonico da ricordare.


Edit::help :on mi ha mostrato che questi comandi sono gli stessi:

  • :on
  • :only
  • CTRL-wCTRL-o
  • E sì , al so CTRL-Wo ha lo stesso effetto (come Nathananswered).

Ognuno di questi quattro chiude tutte le finestre tranne quella attiva.

+0

'^ w_o' è nel documento. È appena sopra il resto. –

+6

+1 Se l'altra finestra contiene modifiche indesiderate, ': on' risponderà con' E445: Altre finestre contiene modifiche' e non chiuderà l'altra finestra. Ad esempio, di solito creo una nuova finestra e leggo in essa un file di cui vorrei strappare. In questo caso, Vim considera l'altra finestra di avere modifiche non scritte. In tal caso, usa ': on!' Per forzare una chiusura. – Sabuncu

1

Proprio come gli altri detto prima il modo per farlo è quello di premere Ctrl + w e poi o. Questo "massimizzerà" la finestra corrente, mentre chiuderà gli altri. Se desideri essere in grado di "non limitarsi", c'è un plugin chiamato ZoomWin per quello. Altrimenti dovresti ricreare la configurazione della finestra da zero.

0

Ho trovato che ctrl-w alla finestra che si desidera chiudere, quindi basta fare: q Questo funziona per me.

+0

Questa è una risposta duplicata in realtà, una copia di qualcosa che è rimasto lì per 3+ anni. –

1

Comprendo bene l'intenzione, utilizzo esclusivamente buffer e occasionalmente divido se necessario.

sotto è stralcio della mia .vimrc

" disable macro, since not used in 90+% use cases 
map q <Nop> 
" q, close/hide current window, or quit vim if no other window 
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR> 
" qo, close all other window -- 'o' stands for 'only' 
nnoremap qo :only<CR> 
set hidden 
set timeout 
set timeoutlen=200 " let vim wait less for your typing! 

che si inserisce il mio flusso di lavoro abbastanza bene

Se q è stato premuto

  • nascondere la finestra corrente se finestra multipla aperta, altro prova a smettere di vim.

se qo è stato premuto,

  • chiudere tutte le altre finestre, nessun effetto se una sola finestra.

Naturalmente, è possibile involucro che grovigli di parte in una funzione, ad esempio

func! Hide_cur_window_or_quit_vim() 
    if winnr('$') > 1 
     hide 
    else 
     silent! exec 'q' 
    endif 
endfunc 
nnoremap q :call Hide_cur_window_or_quit_vim()<CR> 

Sidenote: I rimappare q, dal momento che io non uso di macro per la modifica, invece utilizzare :s, :g, :v e il comando di elaborazione testo esterno, se necessario, ad esempio :'{,'}!awk 'some_programm' o utilizzare :norm! normal-command-here.

Problemi correlati