Annulla la finestra divisa in Vim


231

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


7
Qualche possibilità che potresti accettare la risposta di eckes? È molto più utile di quello attualmente accettato ...
Kyle Strand

Risposte:


288

Premi Control+ w, quindi premi qper chiudere ciascuna finestra alla volta.

Aggiornamento : considera anche la risposta che potrebbe essere più utile per te, coinvolgendo :on (leggi sotto) se non vuoi farlo una finestra alla volta.


9
Sono d'accordo, ma il PO non ha scelto di rispondere, e non posso cambiarlo da solo.
Warren P,

4
Sono abbastanza sicuro che questa sia la risposta corretta. Lo ha fatto per me e se guardi alla domanda di op, non voleva chiudere le sue altre finestre aperte, ma solo quella divisa di recente.
Zak,

1
Non aiuta se il buffer mostrato contiene modifiche non salvate. Dice che dovrei scavalcare! ma non so come. Come un principiante mi sono perso ora.
musiKk,

2
quindi salvalo. Non hai bisogno di questa risposta se non sai come salvare. È possibile che tu non abbia nemmeno PERMISSIONE da salvare.
Warren P

1
Proveniente dai tradizionali editor di GUI, questo è un concetto piuttosto strano. L'impostazione hiddensembra aiutare però. Tuttavia, ciò che intendevo era, come si aggiunge un! a una scorciatoia? È "Cw! Q", "Cw q!", "! Cw q", "C-! W q"? Penso che nessuno di questi, ma ho già dimenticato come creare nuovi buffer, quindi questo è un esercizio per il lettore.
musiKk,

265

Per chiudere tutti i gruppi, di solito posto il cursore nella finestra che deve essere su uno ly visibile e quindi eseguire :onche rende la finestra corrente sulla finestra ly visibile. Bel mnemonico da ricordare.


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

  • :on
  • :only
  • CTRL-w CTRL-o
  • E sì, CTRL-W oha anche lo stesso effetto (come ha risposto Nathan ).

Ognuna di queste quattro chiude tutte le finestre tranne quella attiva.


8
+1 Se l'altra finestra contiene modifiche indesiderate, :onrisponderà con E445: Other window contains changese non chiuderà l'altra finestra. Ad esempio, di solito creo una nuova finestra e leggo in essa un file da cui mi piacerebbe strappare. In questo caso, Vim considera le modifiche non scritte nell'altra finestra. In tal caso, utilizzare :on!per forzare una chiusura.
Sabuncu,

61

per chiudere tutte le finestre ma quella corrente usa:

CTRL+ w,o

Cioè, prima CTRL+ we poi o.


3
Mi chiedo anche se c'è un modo per annullare CTRL+W oaccidentalmente una battitura.
Paolo

30

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


10
Questo è sicuramente il "modo vim", crtl + wo sembra così emacs.
Andy Hayden,

Non mi piace Zperché sono tedesco. (Spoiler: layout della tastiera se si passa frequentemente tra le impostazioni DE / EN)
Tino

6

Il comando: nascondi 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 windowe :help hidein vim.


Questo è fantastico Chrome (con il plugin ssh) intrappola <CW> come "close tab" disabilitando efficacemente tutti i comandi della finestra <cw> di vim. Avere un'alternativa è utile.
rein

6

Da :help opening-window(cerca "Chiusura di una finestra" - /Closing a window)

  • :q[uit]chiude la finestra e il buffer correnti. Se è l'ultima finestra, uscirà anche VIM
  • :bd[elete] scaricare il buffer corrente e chiudere la finestra corrente
  • :qa[all]o :quita[ll]chiuderà tutti i buffer e le finestre e uscirà vim ( :qa!per forzare senza salvare le modifiche)
  • :clo[se]chiudere la finestra corrente ma mantenere aperto il buffer. Se c'è solo una finestra questo comando fallisce
  • :hid[e]nascondi il buffer nella finestra corrente (Leggi di più su :help hidden)
  • :on[ly] chiudere tutte le altre finestre ma lasciare aperti tutti i buffer

5

Ho scoperto che ctrl+ walla finestra che vuoi chiudere, quindi fai :q. Questo funziona per me.


Questa è davvero una risposta duplicata, duplicata di qualcosa che è stato seduto lì per 3+ anni.
Warren P,

@WarrenP non sembra un duplicato. Non ho trovato altre risposte che menzionino ^W^W:quna possibile soluzione, quindi liberatevi di una scissione. Si noti che ^W to the window you want to closeapparentemente implica molteplici usi di ^W^Wper passare alla finestra che si desidera chiudere ..
Tino

Colpa mia. L'altro è ^ O poi o
Warren P

2

Capisco bene le tue intenzioni, uso anche i buffer esclusivamente, e occasionalmente divido se necessario.

sotto è un estratto del mio .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!

Il che si adatta abbastanza bene al mio flusso di lavoro

Se è qstato premuto

  • nascondi la finestra corrente se più finestre sono aperte, altrimenti prova a chiudere vim.

se è qostato premuto,

  • chiudi tutte le altre finestre, nessun effetto se solo una finestra.

Naturalmente, puoi avvolgere quella parte disordinata in una funzione , ad es

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 : Ho rimappare q, dal momento che non utilizzare macro per la modifica, invece usare :s, :g, :ve comando esterno l'elaborazione del testo, se necessario, ad esempio, :'{,'}!awk 'some_programm'o l'uso :norm! normal-command-here.


1

Proprio come gli altri hanno detto prima che il modo per farlo è premere ctrl+ we poi o. Questo "massimizzerà" la finestra corrente, chiudendo le altre. Se vuoi essere in grado di "non-ingrandire", c'è un plugin chiamato ZoomWin per questo. Altrimenti dovresti ricreare la configurazione della finestra da zero.


0

Ok, mi sono appena staccato e ricollegato alla sessione dello schermo e sono tornato alla schermata normale che volevo


Questo non lascia vimla modalità finestra divisa, lascia solo la screenmodalità riquadro diviso - che può essere facilmente confusa, quindi forse anche altri. A proposito, trovo questa funzione dello schermo fastidiosa, quindi ora di default per tmuxconsentire un riattacco con tutte le divisioni intatte.
Tino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.