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 auch save
: save!
überschreibt die Datei, wenn sie bereits vorhanden ist, gibt save
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 Befehl read! <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 des read
Befehls verhält, sondern als eigenständiger Befehl !
. Es kann sein, dass der read
Befehl keine Variante mit deklariert, !
sodass Vim den Rest nur unabhängig interpretiert (also ein " !
allein verwendet" danach liest read
), oder dass read
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.
vimtutor
. Es dauert ungefähr eine halbe Stunde und ist der beste Weg, um die Grundlagen von vi / vim zu lernen.