Come posso uscire dall'editor Vim?


3766

Sono bloccato e non posso scappare. Dice:

"type :quit<Enter> to quit VIM"

Ma quando lo scrivo appare semplicemente nel corpo dell'oggetto.


131
Stai solo cercando di uscire da VIM? In questo caso, premere "escape" e quindi digitare ': q'
Pop

47
Non dimenticare i due punti ! È necessario digitare :quite quindi premere il [ENTER]tasto.
Farahmand

88
È davvero facile imparare le basi di vim ed è integrato direttamente nel tuo sistema. Nel terminale digitare "vimtutor". 25 minuti dopo andrai più veloce del tuo solito editor di testo!
Mark Robson,

4
Controlla qui altri comandi.
Toni,

78
Per evitare di git commitinviarti a Vim in futuro: git config --global core.editor="nano"
Tom Kelly,

Risposte:


4905

Premi il Esctasto per entrare in "Modalità normale". Quindi è possibile digitare :per accedere a "Modalità riga di comando". I due punti ( :) appariranno nella parte inferiore dello schermo ed è possibile digitare uno dei seguenti comandi. Per eseguire un comando, premere il Entertasto.

  • :q per uscire (abbreviazione di :quit)
  • :q!uscire senza salvare (abbreviazione di :quit!)
  • :wq per scrivere e uscire
  • :wq! scrivere ed uscire anche se il file ha solo il permesso di lettura (se il file non ha il permesso di scrittura: forza la scrittura)
  • :x scrivere ed uscire (simile a :wq, ma scrivere solo se ci sono cambiamenti)
  • :exitscrivere ed uscire (uguale a :x)
  • :qaper uscire da tutto (abbreviazione di :quitall)
  • :cq uscire senza salvare e fare in modo che Vim restituisca un errore diverso da zero (es. esci con errore)

Puoi anche uscire da Vim direttamente dalla "Modalità normale" digitando ZZper salvare ed uscire (uguale a :x) o ZQsemplicemente per uscire (uguale a :q!). (Nota che il caso è importante qui. ZZE zznon significa la stessa cosa.)

Vim ha un grande aiuto - a cui puoi accedere con il :helpcomando - dove puoi trovare le risposte a tutte le tue domande e un tutorial per i principianti.


15
A meno che tu non abbia rimappato esc o non abbia una strana mappatura nel tuo .vimrc, allora dovrebbe assolutamente. Se su Linux, digita xev e assicurati che escape sia il tipo di chiave che ottieni quando premi Esc.
Dirvine,

17
Ricorda che puoi usare ctrl + c se non puoi usare Esc (come me perché la mia shell è in TotalTerminal). vim.wikia.com/wiki/Avoid_the_escape_key
dotnetCarpenter

25
:x== ZZma :x! = :wq. :xscrivi file se il file è cambiato, :wqscrivi sempre il file (importa cioè quando lo usi inotify).
Hauleth,

36
Ad essere sincero, faccio più fatica a usare il sistema di aiuto di vim che a usare vim stesso, e per lo più faccio affidamento su schede di consultazione rapida e documentazione online.
bgvaughan,

18
se non hai i permessi sul file ma hai i permessi sudo:w ! sudo tee %
tvlooy

190

Le immagini valgono mille comandi e opzioni Unix:

Inserisci qui la descrizione dell'immagine

Lo attiro ai miei studenti ogni semestre e sembrano afferrare vi in ​​seguito.

vi è una macchina a stati finiti con solo tre stati.

All'avvio, vi passa in modalità COMANDO, dove puoi digitare brevemente, alcuni comandi di carattere, alla cieca . Sai cosa stai facendo; questo non è per i dilettanti.

Quando si desidera modificare effettivamente il testo, è necessario passare alla modalità INSERT con un comando di un carattere:

  • i: vai a INSERISCI al posto del cursore
  • I: vai in modalità INSERT all'inizio della riga
  • a: aggiungi dopo il cursore
  • A: aggiungi alla fine della riga
  • o: apre una nuova riga sotto la riga corrente
  • O: apre una nuova riga al posto della riga corrente

Ora, rispondendo alla domanda: uscire.

È possibile uscire da vi dalla modalità EX:

  • q: se non hai apportato modifiche o le hai precedentemente salvate
  • q !: ignora qualsiasi modifica ed esce
  • wq: salva ed esci
  • x: questo è uguale a wq

we xaccetta un parametro per il nome del file. Se hai avviato vi con un nome file, non è necessario restituirlo di nuovo.

Alla fine, il più importante: come puoi raggiungere la modalità EX?

La modalità EX è per comandi lunghi che puoi vedere digitando nella riga inferiore dello schermo. Dalla modalità COMANDO, si premono i due punti :e nella riga inferiore verranno visualizzati i due punti, in cui è possibile digitare i comandi precedenti.

Dalla modalità INSERT, è necessario premere ESC, ovvero il pulsante Esc, passare alla modalità COMMAND e quindi: per passare alla modalità EX.

Se non sei sicuro, premi ESC e questo ti porterà in modalità di comando.

Quindi, il metodo robusto è ESC -: - x-Enter che salva il tuo file ed esce.


5
Grazie, l'immagine è molto utile. Tuttavia, per me wnon cambia dalla modalità Ex a Command, ma lo Escfa. Che cosa sto facendo di sbagliato?
Nick Volynkin,

2
Se scrivi w-Enter che salva il tuo file e torna in modalità COMANDO. L'ho scritto per avere un quadro completo dei comandi save & quit.
Gergely,

3
oh, quindi vuoi dire :w. Quindi ha perfettamente senso. A proposito, c'è un comando per ricaricare dal disco (cioè per ripristinare le modifiche ma non chiudere il file)? In tal caso, potrebbe essere accanto al wdiagramma.
Nick Volynkin,

2
@Gergely ho appena capito la confusione! Dai documenti, la modalità normale è anche chiamata modalità di comando ! Quindi, modalità comando! = Modalità riga di comando. Wow!
jpaugh

2
@NickVolynkin il comando per ricaricare dal disco è :e(o più probabilmente :e!poiché ti avviserà delle modifiche non salvate senza il !)
JDS

177

Prima di inserire un comando, premi il Esctasto . Dopo averlo inserito, premi il tasto Returnper confermare.

Esctermina il comando corrente e passa Vim in modalità normale . Ora se premi :, :apparirà nella parte inferiore dello schermo. Ciò conferma che stai effettivamente digitando un comando e non stai modificando il file.

La maggior parte dei comandi hanno le abbreviazioni, con parte facoltativa racchiuso tra parentesi: c[ommand].

I comandi contrassegnati con '*' sono solo Vim (non implementato in Vi).

Uscita sicura (errore in caso di modifiche non salvate):

  • :q[uit] Esci dalla finestra corrente . Esci da Vim se questa è l'ultima finestra. Ciò non riesce quando sono state apportate modifiche nel buffer corrente .
  • :qa[ll]* Chiudi tutte le finestre e Vim, a meno che non ci siano alcuni buffer che sono stati modificati.

Esci da prompt (richiede se ci sono modifiche non salvate)

  • :conf[irm] q[uit]* Esci, ma avvisa quando ci sono alcuni buffer che sono stati modificati.
  • :conf[irm] xa[ll]* Scrivi tutti i buffer modificati e esci da Vim. Richiama un prompt quando alcuni buffer non possono essere scritti.

Scrivi (salva) le modifiche ed esci:

  • :wqScrivi il file corrente (anche se non è stato modificato) ed esci. La scrittura non riesce quando il file è di sola lettura o il buffer non ha un nome. :wqa[ll]* per tutte le finestre.
  • :wq!Lo stesso, ma scrive anche file di sola lettura. :wqa[ll]!* per tutte le finestre.
  • :x[it], ZZ(con dettagli ). Scrivi il file solo se è stato modificato ed esce, :xa[ll]* per tutte le finestre.

Annulla modifiche ed esci:

  • :q[uit]! ZQ* Esci senza scrivere, anche quando i buffer visibili hanno delle modifiche. Non si chiude quando ci sono buffer nascosti modificati.
  • :qa[ll]!*, :quita[ll][!]* Esci da Vim, tutte le modifiche ai buffer (incluso nascosto) vanno perse.

Premere Returnper confermare il comando.

Questa risposta non fa riferimento a tutti i comandi e argomenti di Vim write e quit. In effetti, sono indicati nella documentazione di Vim .

Vim ha un ampio aiuto integrato, digita Esc:helpReturnper aprirlo.

Questa risposta è stata ispirata dall'altra , originariamente creata da @dirvine e modificata da altri utenti SO. Ho incluso ulteriori informazioni da riferimento Vim, commenti SO e alcune altre fonti. Anche le differenze per Vi e Vim si riflettono.


81

Se si desidera uscire senza salvare in Vim e fare in modo che Vim restituisca un codice di uscita diverso da zero, è possibile utilizzare :cq.

Lo uso sempre perché non posso essere disturbato dal cambio del mignolo !. Spesso installo cose a Vim che non hanno bisogno di essere salvate in un file. Abbiamo anche uno strano wrapper SVN al lavoro che deve essere chiuso con un valore diverso da zero per interrompere un check-in.


19
Lo uso anche per interrompere un commit git, o visudo, o crontab, ...
Josh Lee

L'interruzione di un commit git con :q!funziona correttamente, poiché git sta verificando un messaggio non vuoto e non un codice di uscita diverso da zero.
Moopet,

So che funziona, è solo questo: cq non richiede il tasto Maiusc. :-)
Sue Spence

47

Questo è per lo scenario peggiore di uscita da Vim se vuoi semplicemente uscire, non hai idea di cosa hai fatto e non ti importa cosa accadrà ai file che hai aperto.

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

Questo dovrebbe farti uscire la maggior parte del tempo.

Alcuni casi interessanti in cui hai bisogno di qualcosa del genere:

  • iCtrl-ovg (si accede alla modalità inserimento, quindi alla modalità visiva e quindi alla modalità operatore in sospeso)

  • QappendEnter

  • iCtrl-ogQCtrl-r=Ctrl-k (grazie a porges per questo caso)

  • :set insertmode(questo è un caso quando Ctrl-\Ctrl-ntorni alla modalità normale)


Modifica: questa risposta è stata corretta a causa dei casi precedenti. Una volta era:

EscEscEsc:qa!Enter

Tuttavia, ciò non funziona se si è entrati in modalità Ex. In tal caso dovresti fare:

viEnter:qa!Enter

Quindi un comando completo per "Non voglio sapere cosa ho fatto e non voglio salvare nulla, voglio solo uscire adesso!" sarebbe

viEnterEscEscEsc:qa!accedere


6
@cavalcade Questo è un metodo estremamente generale per garantire che l'editor sia in modalità normale per poi uscire in sicurezza. Nell'uso normale tutto ciò che serve è :qo:wq
Dan Passaro

6
Non abbastanza generale! E se io (un principiante) scrivessi i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>?
porges,

@porges grazie per il test case! Ci sono anche altri casi di test che dimostrano che il metodo originale era doloroso. Ho modificato la risposta per essere più generale ora.
Heikki Naski,

@HeikkiNaski almeno per me ho bisogno di entrare anche dopo Ctrl-C (per sfuggire al registro delle espressioni)
porges

40

Nel caso in cui sia necessario uscire da Vim in modalità facile (mentre si utilizza l' -yopzione) è possibile accedere alla modalità Vim normale premendo Ctrl+ Le quindi funzionerà qualsiasi delle normali opzioni di uscita.


7
Ancora un'altra opzione: è possibile utilizzare Ctrl+Oper uscire temporaneamente dalla modalità INSERT quindi accedere :q. Il trucco con questa combinazione è utile anche in vim normale per eseguire un singolo comando e tornare alla modalità INSERT.
Andrey Starodubtsev,

28

Vim ha tre modalità operative: modalità Input, modalità Command ed Ex.

Modalità di immissione : tutto ciò che digiti, tutti i tasti vengono ripetuti sullo schermo.

Modalità di comando o modalità di fuga : tutto ciò che digiti in questa modalità viene interpretato come un comando.

Modalità Ex : questo è un altro editor, ad es. È un editor di linee. Funziona per riga o in base a un intervallo di righe. In questa modalità, a :appare nella parte inferiore dello schermo. Questo è l'ex editor.

Per uscire da Vim, puoi uscire mentre sei in modalità ex o in modalità comando. Non puoi uscire da Vim quando sei in modalità input.

Uscita dalla modalità ex

  1. Devi essere sicuro di essere in modalità Comando. Per fare ciò, basta premere il Esctasto.

  2. Passare alla modalità ex premendo il :tasto

  3. Utilizzare una delle seguenti combinazioni in modalità ex per uscire:

    :q- esci :q!- esci senza salvare :wq- salva e chiudi o scrivi e chiudi :wq!- lo stesso di wq, ma forza la scrittura nel caso in cui i permessi dei file siano di sola lettura :x- scrivi e chiudi :qa- chiudi tutto. utile quando si aprono più file come:vim abc.txt xyz.txt

Uscita dalla modalità comando

  1. Premi il tasto Esc. Probabilmente lo hai già fatto se sei in modalità comando.

  2. Premere maiuscole ZZ ( shift zz) - salva ed esci

  3. Premere maiuscola ZQ ( shift zq) - uscire senza salvare.


3
Quello che stai chiamando "ex mode" è in realtà chiamato modalità a riga di comando . Ti permette di inserire ex comandi, ma con alcune importanti differenze .
jpaugh

1
Hmm no. Stai dimenticando la modalità visiva.
Pryftan,

26

Dopo aver colpito ESC(o cmd+ Csul mio computer) è necessario premere :per visualizzare il prompt dei comandi. Quindi, puoi entrare quit.

È possibile che la macchina non ti consenta di uscire perché le informazioni non sono state salvate. Se desideri comunque uscire, inserisci !direttamente dopo l'uscita (es :quit!.).


19

Ho ottenuto Vim installando un client Git su Windows. :qnon uscirei da Vim per me. :exitfatto comunque ...


1
Allo stesso modo per Vim facendo git su un macintosh questo ha funzionato.
Joel

1
@Joel l'ho appena verificato sul mio mac, entrambi i comandi sono legittimi ( vim -version7.3).
Nick Volynkin,

2
Per Git BashWindows, a Vimvolte ESCnon funziona. usa CTRL+ [invece.
Val

@Val Sembra stranamente familiare. Iirc è perché i due fanno la stessa cosa. Come in ^[è lo stesso di ESC. È interessante che Windows lo renda più complicato. E divertente.
Pryftan,

10

La domanda è stata posta qui .

Il qcomando con un numero chiude la divisione specificata in quella posizione.

:q<split position>o :<split position>qchiuderà la divisione in quella posizione.

Supponiamo che il layout della finestra di Vim sia il seguente:

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

Se si esegue il q1 comando, verrà chiusa la prima divisione.q2chiuderà la seconda divisione e viceversa.

L'ordine della posizione divisa nel comando quit non ha importanza. :2qo :q2chiuderà la seconda divisione.

Se la posizione di divisione che passi al comando è maggiore del numero di divisioni correnti, chiuderà semplicemente l'ultima divisione.

Ad esempio, se si esegue l' q100installazione sopra la finestra in cui sono presenti solo tre suddivisioni, verrà chiusa l'ultima suddivisione (Divisione 3).

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.