Versuchen Sie nur, VIM zu beenden? Wenn dies der Fall ist, drücken Sie "Escape" und geben Sie ': q'
Pop
47
Vergiss den Doppelpunkt nicht ! Sie sollten eingeben :quitund dann die [ENTER]Taste drücken.
Farahmand
88
Es ist wirklich einfach, die Grundlagen von vim zu erlernen, und es ist direkt in Ihr System integriert. Geben Sie im Terminal "vimtutor" ein. 25 Minuten später sind Sie schneller als mit Ihrem üblichen Texteditor!
Um zu verhindern git commit, dass Sie in Zukunft zu vim geschickt werden: git config --global core.editor="nano"
Tom Kelly
Antworten:
4903
Drücken Sie die EscTaste, um in den "Normalmodus" zu gelangen. Anschließend können Sie :eingeben, um den "Befehlszeilenmodus" aufzurufen. Am :unteren Bildschirmrand wird ein Doppelpunkt ( ) angezeigt, und Sie können einen der folgenden Befehle eingeben. Drücken Sie die EnterTaste, um einen Befehl auszuführen .
:q zu beenden (kurz für :quit)
:q!beenden ohne zu speichern (kurz für :quit!)
:wq schreiben und beenden
:wq! Schreiben und Beenden, auch wenn die Datei nur Leseberechtigung hat (wenn die Datei keine Schreibberechtigung hat: Schreiben erzwingen)
:x schreiben und beenden (ähnlich :wq, aber nur schreiben, wenn es Änderungen gibt)
:exitschreiben und beenden (wie :x)
:qaalle beenden (kurz für :quitall)
:cq Beenden ohne Speichern und Vim einen Fehler ungleich Null zurückgeben lassen (dh mit Fehler beenden)
Sie können Vim auch direkt aus dem "Normalmodus" ZZbeenden, indem Sie eingeben , um zu speichern und zu beenden (wie :x) oder ZQeinfach zu beenden (wie :q!). (Beachten Sie, dass der Fall hier wichtig ist ZZund zznicht dasselbe bedeutet.)
Vim verfügt über eine umfassende Hilfe, auf die Sie mit dem :helpBefehl zugreifen können. Dort finden Sie Antworten auf alle Ihre Fragen und ein Tutorial für Anfänger.
Es sei denn, Sie haben esc neu zugeordnet oder haben eine seltsame Zuordnung in Ihrer .vimrc, dann sollte es definitiv. Wenn Sie unter Linux xev eingeben und sicherstellen, dass Escape der Schlüsseltyp ist, den Sie erhalten, wenn Sie Escape drücken.
Dirvine
17
Denken Sie daran, dass Sie Strg + C verwenden können, wenn Sie Esc nicht verwenden können (wie ich, weil sich meine Shell in TotalTerminal befindet). vim.wikia.com/wiki/Avoid_the_escape_key
dotnetCarpenter
25
:x== ZZaber :x! = :wq. :xDatei :wqschreiben Wenn sich die Datei geändert hat, schreibe die Datei immer (egal dh bei der Verwendung inotify).
Hauleth
36
Um ehrlich zu sein, fällt es mir schwerer, das Hilfesystem von vim zu verwenden als vim selbst, und ich verlasse mich hauptsächlich auf schnelle Referenzkarten und Online-Dokumentation.
Bgvaughan
18
Wenn Sie keine Berechtigungen für die Datei haben, aber :w ! sudo tee %
Sudo-
190
Bilder sind tausend Unix-Befehle und -Optionen wert:
Ich ziehe dies jedes Semester zu meinen Studenten und sie scheinen danach vi zu begreifen.
Beim Start wechselt vi in den BEFEHLSMODUS, in dem Sie blind kurze Befehle mit wenigen Zeichen eingeben können . Sie wissen, was Sie tun; Das ist nichts für Amateure.
Wenn Sie Text tatsächlich bearbeiten möchten, sollten Sie mit einem einstelligen Befehl in den INSERT-Modus wechseln:
i: Gehen Sie zu INSERT anstelle des Cursors
I: Wechseln Sie am Anfang der Zeile in den INSERT-Modus
a: Nach dem Cursor anhängen
A: Am Ende der Zeile anhängen
o: Öffnen Sie eine neue Zeile unterhalb der aktuellen Zeile
O: Öffnen Sie eine neue Zeile anstelle der aktuellen Zeile
Beantworten Sie nun die Frage: Verlassen.
Sie können vi aus dem EX-Modus beenden:
F: Wenn Sie keine Änderungen vorgenommen oder diese zuvor gespeichert haben
q!: ignoriert alle Änderungen und beendet
wq: speichern und beenden
x: das ist gleich wq
wund xakzeptieren Sie einen Dateinamenparameter. Wenn Sie vi mit einem Dateinamen gestartet haben, müssen Sie ihn hier nicht erneut angeben.
Endlich das Wichtigste: Wie können Sie den EX-Modus erreichen?
Der EX-Modus ist für lange Befehle vorgesehen, die Sie in der unteren Zeile des Bildschirms eingeben können. Im BEFEHLSMODUS drücken Sie den Doppelpunkt, :und in der unteren Zeile wird ein Doppelpunkt angezeigt , in den Sie die obigen Befehle eingeben können.
Im INSERT-Modus müssen Sie ESC drücken, dh die Escape-Taste, um in den COMMAND-Modus zu wechseln, und dann: um in den EX-Modus zu wechseln.
Wenn Sie sich nicht sicher sind, drücken Sie ESC und Sie gelangen in den Befehlsmodus.
Die robuste Methode ist also ESC -: - x-Enter, mit der Ihre Datei gespeichert und beendet wird.
Danke, das Bild ist sehr hilfreich. Für mich wändert sich jedoch nicht von Ex in den Befehlsmodus, sondern Esc. Was mache ich falsch?
Nick Volynkin
2
Wenn Sie w-Enter schreiben, wird Ihre Datei gespeichert und der COMMAND-Modus wiederhergestellt. Ich habe es geschrieben, um ein vollständiges Bild der Befehle zum Speichern und Beenden zu erhalten.
Gergely
3
Oh, du meinst also :w. Dann macht es vollkommen Sinn. Gibt es übrigens einen Befehl zum erneuten Laden von der Festplatte (dh zum Zurücksetzen von Änderungen, aber nicht zum Schließen der Datei)? Wenn ja, könnte es neben wim Diagramm sein.
Nick Volynkin
2
@Gergely Ich habe gerade die Verwirrung herausgefunden! In den Dokumenten wird der normale Modus auch als Befehlsmodus bezeichnet ! Also, Befehlsmodus! = Befehlszeilenmodus. Beeindruckend!
Jpaugh
2
@NickVolynkin der Befehl zum Neuladen von der Festplatte ist :e(oder wahrscheinlicher, :e!da er Sie vor nicht gespeicherten Änderungen ohne die warnt !)
JDS
177
Bevor Sie einen Befehl eingeben, drücken Sie die EscTaste . Nachdem Sie es eingegeben haben, drücken Sie Returnzur Bestätigung die Taste.
Escbeendet den aktuellen Befehl und schaltet Vim in den normalen Modus . Wenn Sie jetzt drücken :, :wird das am unteren Bildschirmrand angezeigt. Dies bestätigt, dass Sie tatsächlich einen Befehl eingeben und die Datei nicht bearbeiten.
Die meisten Befehle haben Abkürzungen, wobei der optionale Teil in Klammern steht : c[ommand].
Mit '*' gekennzeichnete Befehle sind nur Vim (in Vi nicht implementiert).
Sicheres Beenden (schlägt fehl, wenn nicht gespeicherte Änderungen vorliegen):
:q[uit] Beenden Sie das aktuelle Fenster . Beenden Sie Vim, wenn dies das letzte Fenster ist. Dies schlägt fehl, wenn Änderungen im aktuellen Puffer vorgenommen wurden .
:qa[ll]* Beenden Sie alle Fenster und Vim, es sei denn, es wurden einige Puffer geändert.
Eingabeaufforderung beenden (Aufforderung, wenn nicht gespeicherte Änderungen vorliegen)
:conf[irm] q[uit]* Beenden Sie, aber geben Sie eine Eingabeaufforderung, wenn einige Puffer geändert wurden.
:conf[irm] xa[ll]* Schreiben Sie alle geänderten Puffer und beenden Sie Vim. Rufen Sie eine Eingabeaufforderung auf, wenn einige Puffer nicht geschrieben werden können.
Änderungen schreiben (speichern) und beenden:
:wqSchreiben Sie die aktuelle Datei (auch wenn sie nicht geändert wurde) und beenden Sie sie. Das Schreiben schlägt fehl, wenn die Datei schreibgeschützt ist oder der Puffer keinen Namen hat. :wqa[ll]* für alle Fenster.
:wq!Das gleiche, schreibt aber auch schreibgeschützte Dateien. :wqa[ll]!* für alle Fenster.
:x[it], ZZ(mit Details ). Schreiben Sie die Datei nur, wenn sie geändert wurde, und beenden Sie :xa[ll]* für alle Fenster.
Änderungen verwerfen und beenden:
:q[uit]!ZQ* Beenden Sie ohne zu schreiben, auch wenn sichtbare Puffer Änderungen aufweisen. Wird nicht beendet, wenn ausgeblendete Puffer geändert wurden.
:qa[ll]!*, :quita[ll][!]* Beende Vim, alle Änderungen an den Puffern (einschließlich versteckter) gehen verloren.
Drücken Sie Return, um den Befehl zu bestätigen.
Diese Antwort bezieht sich nicht auf alle Vim-Schreib- und Beendigungsbefehle und -argumente. In der Tat wird auf sie in der Vim-Dokumentation verwiesen .
Vim verfügt über eine umfangreiche integrierte Hilfe. Geben Sie diese ein Esc:helpReturn, um sie zu öffnen.
Diese Antwort wurde von der anderen inspiriert , die ursprünglich von @dirvine verfasst und von anderen SO-Benutzern bearbeitet wurde. Ich habe weitere Informationen aus Vim-Referenzen, SO-Kommentaren und einigen anderen Quellen hinzugefügt. Unterschiede für Vi und Vim spiegeln sich ebenfalls wider.
Wenn Sie beenden möchten, ohne in Vim zu speichern, und Vim einen Exit-Code ungleich Null zurückgeben möchte , können Sie diesen verwenden :cq.
Ich benutze dies die ganze Zeit, weil ich nicht die Mühe habe, mich für eine kleine Schicht zu bewegen !. Ich leite oft Dinge an Vim weiter, die nicht in einer Datei gespeichert werden müssen. Wir haben auch einen ungeraden SVN-Wrapper in Arbeit, der mit einem Wert ungleich Null beendet werden muss, um ein Einchecken abzubrechen.
Ich benutze dies auch, um ein Git Commit oder Visudo oder Crontab abzubrechen.
Josh Lee
Das Abbrechen eines Git-Commits mit :q!funktioniert einwandfrei, da Git nach einer nicht leeren Nachricht und nicht nach einem Exit-Code ungleich Null sucht.
Moopet
Ich weiß, dass es funktioniert, es ist nur so: cq benötigt keine Umschalttaste. :-)
Sue Spence
47
Dies ist für den schlimmsten Fall, dass Sie Vim beenden, wenn Sie nur aussteigen möchten, keine Ahnung haben, was Sie getan haben, und es Ihnen egal ist, was mit den von Ihnen geöffneten Dateien geschehen wird.
Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter
Dies sollte Sie die meiste Zeit rausholen.
Einige interessante Fälle, in denen Sie so etwas brauchen:
iCtrl-ovg (Sie wechseln in den Einfügemodus, dann in den visuellen Modus und dann in den ausstehenden Bedienermodus.)
QappendEnter
iCtrl-ogQCtrl-r=Ctrl-k (danke an porges für diesen Fall)
:set insertmode(Dies ist ein Fall, wenn Ctrl-\Ctrl-nSie zum normalen Modus zurückkehren.)
Bearbeiten: Diese Antwort wurde aufgrund der oben genannten Fälle korrigiert. Ich war:
EscEscEsc:qa!Enter
Dies funktioniert jedoch nicht, wenn Sie in den Ex-Modus gewechselt sind. In diesem Fall müssten Sie Folgendes tun:
viEnter:qa!Enter
Also ein vollständiger Befehl für "Ich möchte nicht wissen, was ich getan habe und ich möchte nichts speichern, ich möchte nur jetzt raus!" wäre
@cavalcade Dies ist eine äußerst allgemeine Methode, um sicherzustellen, dass sich der Editor im normalen Modus befindet und dann sicher beendet wird. Im normalen Gebrauch brauchen Sie nur :qoder:wq
Dan Passaro
6
Nicht allgemein genug! Was ist, wenn ich (ein Anfänger) tippe i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>?
porges
@porges danke für den Testfall! Es gibt auch einige andere Testfälle, die beweisen, dass die ursprüngliche Methode bedauerlich war. Ich habe die Antwort jetzt allgemeiner bearbeitet.
Heikki Naski
@ HeikkiNaski zumindest für mich muss ich auch nach Strg-C
eingeben
40
Wenn Sie Vim im einfachen Modus beenden müssen (während Sie die -yOption verwenden), können Sie durch Drücken von Ctrl+ in den normalen Vim-Modus wechseln. LAnschließend funktioniert jede der normalen Optionen zum Beenden.
Noch eine Option: Sie können Ctrl+Oden INSERT-Modus vorübergehend verlassen und dann aufrufen :q. Ein Trick mit dieser Kombination ist auch in normalem vim nützlich, um einen einzelnen Befehl auszuführen und zum INSERT-Modus zurückzukehren.
Andrey Starodubtsev
28
Vim verfügt über drei Betriebsmodi: Eingabemodus, Befehlsmodus und Ex-Modus.
Eingabemodus - alles, was Sie eingeben, alle Tastenanschläge werden auf dem Bildschirm wiedergegeben.
Befehlsmodus oder Escape-Modus - Alles, was Sie in diesem Modus eingeben, wird als Befehl interpretiert.
Ex-Modus - Dies ist ein weiterer Editor, z. Es ist ein Zeileneditor. Es funktioniert pro Zeile oder basierend auf einer Reihe von Zeilen. In diesem Modus wird :am unteren Bildschirmrand ein angezeigt. Dies ist der Ex-Editor.
Um Vim zu beenden, können Sie beenden, während Sie sich entweder im Ex-Modus oder im Befehlsmodus befinden. Sie können Vim nicht beenden, wenn Sie sich im Eingabemodus befinden.
Verlassen des Ex-Modus
Sie müssen sicher sein, dass Sie sich im Befehlsmodus befinden. Drücken Sie dazu einfach die EscTaste.
Wechseln Sie in den Ex-Modus, indem Sie die :Taste drücken
Verwenden Sie zum Beenden eine der folgenden Kombinationen im Ex-Modus:
:q- Beenden
:q!- Beenden ohne Speichern
:wq- Speichern & Beenden oder Schreiben & Beenden
:wq!- wie bei wq, aber Schreiben erzwingen, falls die Dateiberechtigungen schreibgeschützt sind
:x- Schreiben & Beenden
:qa- Alle beenden. nützlich, wenn mehrere Dateien geöffnet werden wie:vim abc.txt xyz.txt
Beenden des Befehlsmodus
Drücken Sie die Escape-Taste. Sie haben dies wahrscheinlich bereits getan, wenn Sie sich im Befehlsmodus befinden.
Drücken Sie die Hauptstadt ZZ ( shift zz) - Speichern und beenden
Drücken Sie die Großbuchstabe ZQ ( shift zq) - Beenden ohne Speichern.
Nach dem Drücken ESC(oder cmd+ Cauf meinem Computer) müssen Sie drücken, :damit die Eingabeaufforderung angezeigt wird. Dann können Sie eingeben quit.
Möglicherweise können Sie auf dem Computer nicht beenden, da Ihre Informationen nicht gespeichert wurden. Wenn Sie trotzdem beenden möchten, geben Sie !direkt nach dem Beenden ein (dh :quit!).
Ähnlich funktionierte dies für vim, der Git auf einem Macintosh macht.
Joel
1
@ Joel hat dies gerade auf meinem Mac überprüft, beide Befehle sind legitim ( vim -version7.3).
Nick Volynkin
2
Für Git Bashunter Windows, in Vimmanchmal ESCnicht funktioniert. Verwenden Sie stattdessen CTRL+ [.
Val
@Val Das kommt mir seltsam bekannt vor. Das liegt daran, dass die beiden dasselbe tun. Wie in ^[ist das gleiche wie ESC. Das ist interessant, dass Windows es komplizierter macht. Und amüsant.
Wenn Sie den q1Befehl ausführen , wird die erste Teilung geschlossen.q2schließt den zweiten Split und umgekehrt.
Die Reihenfolge der geteilten Position im Befehl quit spielt keine Rolle. :2qoder :q2schließt den zweiten Split.
Wenn die Teilungsposition, die Sie an den Befehl übergeben, größer ist als die Anzahl der aktuellen Teilungen, wird einfach die letzte Teilung geschlossen.
Wenn Sie beispielsweise q100das Setup im obigen Fenster ausführen, in dem nur drei Teilungen vorhanden sind, wird die letzte Teilung geschlossen (Teilung 3).
:quit
und dann die[ENTER]
Taste drücken.git commit
, dass Sie in Zukunft zu vim geschickt werden:git config --global core.editor="nano"
Antworten:
Drücken Sie die EscTaste, um in den "Normalmodus" zu gelangen. Anschließend können Sie
:
eingeben, um den "Befehlszeilenmodus" aufzurufen. Am:
unteren Bildschirmrand wird ein Doppelpunkt ( ) angezeigt, und Sie können einen der folgenden Befehle eingeben. Drücken Sie die EnterTaste, um einen Befehl auszuführen .:q
zu beenden (kurz für:quit
):q!
beenden ohne zu speichern (kurz für:quit!
):wq
schreiben und beenden:wq!
Schreiben und Beenden, auch wenn die Datei nur Leseberechtigung hat (wenn die Datei keine Schreibberechtigung hat: Schreiben erzwingen):x
schreiben und beenden (ähnlich:wq
, aber nur schreiben, wenn es Änderungen gibt):exit
schreiben und beenden (wie:x
):qa
alle beenden (kurz für:quitall
):cq
Beenden ohne Speichern und Vim einen Fehler ungleich Null zurückgeben lassen (dh mit Fehler beenden)Sie können Vim auch direkt aus dem "Normalmodus"
ZZ
beenden, indem Sie eingeben , um zu speichern und zu beenden (wie:x
) oderZQ
einfach zu beenden (wie:q!
). (Beachten Sie, dass der Fall hier wichtig istZZ
undzz
nicht dasselbe bedeutet.)Vim verfügt über eine umfassende Hilfe, auf die Sie mit dem
:help
Befehl zugreifen können. Dort finden Sie Antworten auf alle Ihre Fragen und ein Tutorial für Anfänger.quelle
:x
==ZZ
aber:x
! =:wq
.:x
Datei:wq
schreiben Wenn sich die Datei geändert hat, schreibe die Datei immer (egal dh bei der Verwendunginotify
).:w ! sudo tee %
Bilder sind tausend Unix-Befehle und -Optionen wert:
Ich ziehe dies jedes Semester zu meinen Studenten und sie scheinen danach vi zu begreifen.
vi ist eine endliche Zustandsmaschine mit nur drei Zuständen.
Beim Start wechselt vi in den BEFEHLSMODUS, in dem Sie blind kurze Befehle mit wenigen Zeichen eingeben können . Sie wissen, was Sie tun; Das ist nichts für Amateure.
Wenn Sie Text tatsächlich bearbeiten möchten, sollten Sie mit einem einstelligen Befehl in den INSERT-Modus wechseln:
Beantworten Sie nun die Frage: Verlassen.
Sie können vi aus dem EX-Modus beenden:
w
undx
akzeptieren Sie einen Dateinamenparameter. Wenn Sie vi mit einem Dateinamen gestartet haben, müssen Sie ihn hier nicht erneut angeben.Endlich das Wichtigste: Wie können Sie den EX-Modus erreichen?
Der EX-Modus ist für lange Befehle vorgesehen, die Sie in der unteren Zeile des Bildschirms eingeben können. Im BEFEHLSMODUS drücken Sie den Doppelpunkt,
:
und in der unteren Zeile wird ein Doppelpunkt angezeigt , in den Sie die obigen Befehle eingeben können.Im INSERT-Modus müssen Sie ESC drücken, dh die Escape-Taste, um in den COMMAND-Modus zu wechseln, und dann: um in den EX-Modus zu wechseln.
Wenn Sie sich nicht sicher sind, drücken Sie ESC und Sie gelangen in den Befehlsmodus.
Die robuste Methode ist also ESC -: - x-Enter, mit der Ihre Datei gespeichert und beendet wird.
quelle
w
ändert sich jedoch nicht von Ex in den Befehlsmodus, sondernEsc
. Was mache ich falsch?:w
. Dann macht es vollkommen Sinn. Gibt es übrigens einen Befehl zum erneuten Laden von der Festplatte (dh zum Zurücksetzen von Änderungen, aber nicht zum Schließen der Datei)? Wenn ja, könnte es nebenw
im Diagramm sein.:e
(oder wahrscheinlicher,:e!
da er Sie vor nicht gespeicherten Änderungen ohne die warnt!
)Bevor Sie einen Befehl eingeben, drücken Sie die EscTaste . Nachdem Sie es eingegeben haben, drücken Sie Returnzur Bestätigung die Taste.
Escbeendet den aktuellen Befehl und schaltet Vim in den normalen Modus . Wenn Sie jetzt drücken :,
:
wird das am unteren Bildschirmrand angezeigt. Dies bestätigt, dass Sie tatsächlich einen Befehl eingeben und die Datei nicht bearbeiten.Die meisten Befehle haben Abkürzungen, wobei der optionale Teil in Klammern steht :
c[ommand]
.Mit '*' gekennzeichnete Befehle sind nur Vim (in Vi nicht implementiert).
Sicheres Beenden (schlägt fehl, wenn nicht gespeicherte Änderungen vorliegen):
:q[uit]
Beenden Sie das aktuelle Fenster . Beenden Sie Vim, wenn dies das letzte Fenster ist. Dies schlägt fehl, wenn Änderungen im aktuellen Puffer vorgenommen wurden .:qa[ll]
* Beenden Sie alle Fenster und Vim, es sei denn, es wurden einige Puffer geändert.Eingabeaufforderung beenden (Aufforderung, wenn nicht gespeicherte Änderungen vorliegen)
:conf[irm] q[uit]
* Beenden Sie, aber geben Sie eine Eingabeaufforderung, wenn einige Puffer geändert wurden.:conf[irm] xa[ll]
* Schreiben Sie alle geänderten Puffer und beenden Sie Vim. Rufen Sie eine Eingabeaufforderung auf, wenn einige Puffer nicht geschrieben werden können.Änderungen schreiben (speichern) und beenden:
:wq
Schreiben Sie die aktuelle Datei (auch wenn sie nicht geändert wurde) und beenden Sie sie. Das Schreiben schlägt fehl, wenn die Datei schreibgeschützt ist oder der Puffer keinen Namen hat.:wqa[ll]
* für alle Fenster.:wq!
Das gleiche, schreibt aber auch schreibgeschützte Dateien.:wqa[ll]!
* für alle Fenster.:x[it]
,ZZ
(mit Details ). Schreiben Sie die Datei nur, wenn sie geändert wurde, und beenden Sie:xa[ll]
* für alle Fenster.Änderungen verwerfen und beenden:
:q[uit]!
ZQ
* Beenden Sie ohne zu schreiben, auch wenn sichtbare Puffer Änderungen aufweisen. Wird nicht beendet, wenn ausgeblendete Puffer geändert wurden.:qa[ll]!
*,:quita[ll][!]
* Beende Vim, alle Änderungen an den Puffern (einschließlich versteckter) gehen verloren.Drücken Sie Return, um den Befehl zu bestätigen.
Diese Antwort bezieht sich nicht auf alle Vim-Schreib- und Beendigungsbefehle und -argumente. In der Tat wird auf sie in der Vim-Dokumentation verwiesen .
Vim verfügt über eine umfangreiche integrierte Hilfe. Geben Sie diese ein Esc
:help
Return, um sie zu öffnen.Diese Antwort wurde von der anderen inspiriert , die ursprünglich von @dirvine verfasst und von anderen SO-Benutzern bearbeitet wurde. Ich habe weitere Informationen aus Vim-Referenzen, SO-Kommentaren und einigen anderen Quellen hinzugefügt. Unterschiede für Vi und Vim spiegeln sich ebenfalls wider.
quelle
Wenn Sie beenden möchten, ohne in Vim zu speichern, und Vim einen Exit-Code ungleich Null zurückgeben möchte , können Sie diesen verwenden
:cq
.Ich benutze dies die ganze Zeit, weil ich nicht die Mühe habe, mich für eine kleine Schicht zu bewegen
!
. Ich leite oft Dinge an Vim weiter, die nicht in einer Datei gespeichert werden müssen. Wir haben auch einen ungeraden SVN-Wrapper in Arbeit, der mit einem Wert ungleich Null beendet werden muss, um ein Einchecken abzubrechen.quelle
:q!
funktioniert einwandfrei, da Git nach einer nicht leeren Nachricht und nicht nach einem Exit-Code ungleich Null sucht.Dies ist für den schlimmsten Fall, dass Sie Vim beenden, wenn Sie nur aussteigen möchten, keine Ahnung haben, was Sie getan haben, und es Ihnen egal ist, was mit den von Ihnen geöffneten Dateien geschehen wird.
Ctrl-cEnterEnter
vi
EnterCtrl-\Ctrl-n:qa!
EnterDies sollte Sie die meiste Zeit rausholen.
Einige interessante Fälle, in denen Sie so etwas brauchen:
i
Ctrl-ovg
(Sie wechseln in den Einfügemodus, dann in den visuellen Modus und dann in den ausstehenden Bedienermodus.)Qappend
Enteri
Ctrl-ogQ
Ctrl-r=
Ctrl-k (danke an porges für diesen Fall):set insertmode
(Dies ist ein Fall, wenn Ctrl-\Ctrl-nSie zum normalen Modus zurückkehren.)Bearbeiten: Diese Antwort wurde aufgrund der oben genannten Fälle korrigiert. Ich war:
EscEscEsc
:qa!
EnterDies funktioniert jedoch nicht, wenn Sie in den Ex-Modus gewechselt sind. In diesem Fall müssten Sie Folgendes tun:
vi
Enter:qa!
EnterAlso ein vollständiger Befehl für "Ich möchte nicht wissen, was ich getan habe und ich möchte nichts speichern, ich möchte nur jetzt raus!" wäre
vi
EnterEscEscEsc:qa!
Eingebenquelle
:q
oder:wq
i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>
?Wenn Sie Vim im einfachen Modus beenden müssen (während Sie die
-y
Option verwenden), können Sie durch Drücken von Ctrl+ in den normalen Vim-Modus wechseln. LAnschließend funktioniert jede der normalen Optionen zum Beenden.quelle
Ctrl+O
den INSERT-Modus vorübergehend verlassen und dann aufrufen:q
. Ein Trick mit dieser Kombination ist auch in normalem vim nützlich, um einen einzelnen Befehl auszuführen und zum INSERT-Modus zurückzukehren.Vim verfügt über drei Betriebsmodi: Eingabemodus, Befehlsmodus und Ex-Modus.
Eingabemodus - alles, was Sie eingeben, alle Tastenanschläge werden auf dem Bildschirm wiedergegeben.
Befehlsmodus oder Escape-Modus - Alles, was Sie in diesem Modus eingeben, wird als Befehl interpretiert.
Ex-Modus - Dies ist ein weiterer Editor, z. Es ist ein Zeileneditor. Es funktioniert pro Zeile oder basierend auf einer Reihe von Zeilen. In diesem Modus wird :am unteren Bildschirmrand ein angezeigt. Dies ist der Ex-Editor.
Um Vim zu beenden, können Sie beenden, während Sie sich entweder im Ex-Modus oder im Befehlsmodus befinden. Sie können Vim nicht beenden, wenn Sie sich im Eingabemodus befinden.
Verlassen des Ex-Modus
Sie müssen sicher sein, dass Sie sich im Befehlsmodus befinden. Drücken Sie dazu einfach die EscTaste.
Wechseln Sie in den Ex-Modus, indem Sie die :Taste drücken
Verwenden Sie zum Beenden eine der folgenden Kombinationen im Ex-Modus:
:q
- Beenden:q!
- Beenden ohne Speichern:wq
- Speichern & Beenden oder Schreiben & Beenden:wq!
- wie bei wq, aber Schreiben erzwingen, falls die Dateiberechtigungen schreibgeschützt sind:x
- Schreiben & Beenden:qa
- Alle beenden. nützlich, wenn mehrere Dateien geöffnet werden wie:vim abc.txt xyz.txt
Beenden des Befehlsmodus
Drücken Sie die Escape-Taste. Sie haben dies wahrscheinlich bereits getan, wenn Sie sich im Befehlsmodus befinden.
Drücken Sie die Hauptstadt ZZ (
shift zz
) - Speichern und beendenDrücken Sie die Großbuchstabe ZQ (
shift zq
) - Beenden ohne Speichern.quelle
Nach dem Drücken ESC(oder cmd+ Cauf meinem Computer) müssen Sie drücken, :damit die Eingabeaufforderung angezeigt wird. Dann können Sie eingeben
quit
.Möglicherweise können Sie auf dem Computer nicht beenden, da Ihre Informationen nicht gespeichert wurden. Wenn Sie trotzdem beenden möchten, geben Sie !direkt nach dem Beenden ein (dh
:quit!
).quelle
Ich habe Vim durch die Installation eines Git-Clients unter Windows erhalten.
:q
würde Vim nicht für mich verlassen.:exit
tat jedoch ...quelle
vim -version
7.3).Git Bash
unter Windows, inVim
manchmalESC
nicht funktioniert. Verwenden Sie stattdessenCTRL
+[
.^[
ist das gleiche wieESC
. Das ist interessant, dass Windows es komplizierter macht. Und amüsant.Die Frage wurde hier gestellt .
Der
q
Befehl mit einer Nummer schließt die angegebene Aufteilung an dieser Position.:q<split position>
oder:<split position>q
schließt den Split in dieser Position.Angenommen, Ihr Vim-Fensterlayout sieht wie folgt aus:
Wenn Sie den
q1
Befehl ausführen , wird die erste Teilung geschlossen.q2
schließt den zweiten Split und umgekehrt.Die Reihenfolge der geteilten Position im Befehl quit spielt keine Rolle.
:2q
oder:q2
schließt den zweiten Split.Wenn die Teilungsposition, die Sie an den Befehl übergeben, größer ist als die Anzahl der aktuellen Teilungen, wird einfach die letzte Teilung geschlossen.
Wenn Sie beispielsweise
q100
das Setup im obigen Fenster ausführen, in dem nur drei Teilungen vorhanden sind, wird die letzte Teilung geschlossen (Teilung 3).quelle