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, qdass Sie erwähnen, aber auch save: save!überschreibt die Datei, wenn sie bereits vorhanden ist, gibt savejedoch 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 :!lsoder :!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 readBefehls verhält, sondern als eigenständiger Befehl !. Es kann sein, dass der readBefehl keine Variante mit deklariert, !sodass Vim den Rest nur unabhängig interpretiert (also ein " !allein verwendet" danach liest read), oder dass readeine 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.