Ich habe gesehen, dass das manchmal :q
funktioniert, aber manchmal müssen wir es verwenden :q!
. Dies ist bei vielen Befehlen der Fall. Ich habe mich gefragt, was !
in vim
und wann allgemein verwendet wird . Ich habe versucht, dies zu googeln, aber es scheint, dass bei der Suche das Ausrufezeichen weggelassen wird.
8
vimtutor
. Es dauert ungefähr eine halbe Stunde und ist der beste Weg, um die Grundlagen von vi / vim zu lernen.Antworten:
Wenn Sie keine Änderungen am eigentlichen Inhalt der Datei vornehmen, können Sie einfach mit beenden
:q
. Wenn Sie jedoch Änderungen vornehmen, lässt vim kein einfaches Beenden zu, da Sie diese Änderungen möglicherweise nicht aufgeben möchten (insbesondere, wenn Sie lange Zeit in vim gearbeitet und:q
versehentlich verwendet haben). In:q!
diesem Fall wird die Beendigungsoperation erzwungen (Warnung überschreiben). Sie können allen geöffneten Fenstern (z. B. den mit geöffneten Ctrlwn) mit ein erzwungenes Beenden erteilen:qa!
.Sie können Änderungen ausschreiben und mit
:wq
(oder:x
) beenden. Dies schlägt manchmal fehl (die Datei wurde schreibgeschützt geöffnet (-R
in der Befehlszeile oder vim wurde mit demview
Befehl aufgerufen ). In diesem Fall können Sie den Schreibvorgang mit erzwingen:wq!
.Als Nebenwirkung , können Sie auch
ZQ
die gleiche Operation zu tun , wie:q!
undZZ
die gleichen wie zu tun:wq
, was auf den Händen zum Tippen einfacher sein können :)Vim verfügt außerdem über eine integrierte Hilfe, über die Sie darauf zugreifen können
:help
. Das Beenden hat eine eigene schnelle Themenseite ::help Q_wq
.quelle
!
Shell-Befehle wie in:!ls -l
:r! command
ist sehr ähnlich zu!!command
, der erstere fügt die Befehlsausgabe in die folgende Zeile nach dem Cursor ein, der letztere ersetzt den Inhalt der vorhandenen Zeile.Es gibt keine "allgemeine Verwendung" von
!
, es ist nur ein Modifikator. Jeder Befehl kann auswählen, was ein Extra!
tun soll.In vielen Fällen werden Befehle so programmiert, dass sie
!
erzwungen werden. Beispiele sind,q
dass Sie erwähnen, aber auchsave
:save!
überschreibt die Datei, wenn sie bereits vorhanden ist, gibtsave
jedoch einen Fehler zurück und schlägt vor, sie zu verwenden,save!
wenn Sie sicher sind, was Sie tun.Schließlich
!
wird es alleine für Shell-Befehle verwendet, zum Beispiel:!ls
oder:!mkdir foo
.Im Fall von
read
(aus Ihrem Kommentar) wird der Befehlread! <something>
von Vim als "Ausführen<something>
und Lesen (dh in Vim Schreiben in Puffer) seiner Ausgabe" interpretiert . Hier ist es also so, als ob sich das!
nicht als Modifikator desread
Befehls verhält, sondern als eigenständiger Befehl!
. Es kann sein, dass derread
Befehl keine Variante mit deklariert,!
sodass Vim den Rest nur unabhängig interpretiert (also ein "!
allein verwendet" danach liestread
), oder dassread
eine Variante mit!
diesem bestimmten Verhalten deklariert ( "Rest als Shell ausführen"). ) das ahmt nach, was der "!
allein benutzte" tut.Ich denke, das Mitnehmen ist: Es gibt keine Regel, jeder Befehl definiert, was zu
!
tun ist, und während versucht wird, eine gewisse Konsistenz in der Wirkung von Modifikatoren zu erzielen, gibt es keine sehr strengen Regeln (wie "!
wird es immer sein" zum Erzwingen " ) erlauben, nützlichere Verhaltensweisen mit weniger Tastenanschlägen zu haben, was ebenfalls ein Plus ist.quelle
:w!cat
und:w !cat