vim
Befehle im Normalmodus (Bearbeitung)
Suche…
Einführung - Kurzer Hinweis zum Normalmodus
Im Normalmodus können Befehle durch direkte Tastenkombinationen eingegeben werden (z. B. u , um die letzte Änderung rückgängig zu machen). Diese Befehle haben häufig Äquivalente im 'ex'-Modus, auf die Sie durch Eingabe eines Doppelpunkts : zugreifen können, der Sie in einem einzeiligen Puffer am unteren Rand des Vim-Fensters ablegt.
Im 'Ex'-Modus geben Sie nach der Eingabe des Doppelpunkts einen Befehlsnamen oder seine Abkürzung gefolgt von Enter ein , um den Befehl auszuführen. Also : undo
Enter bewirkt dasselbe wie das direkte Tippen von u im Normalmodus.
Sie sehen, dass die direkten Befehle oft schneller sind (einmal gelernt) als die 'ex'-Befehle für die einfache Bearbeitung. Der Vollständigkeit halber werden sie jedoch in der folgenden Dokumentation, soweit möglich, angezeigt, wenn beide verfügbar sind.
Den meisten dieser Befehle kann auch eine Zählung vorangestellt werden, indem eine Zahl vorangestellt oder eingefügt wird. Durch Eingabe von 3dd im Normalmodus werden beispielsweise drei Zeilen (beginnend an der aktuellen Cursorposition) gelöscht .
Grundlegendes Rückgängig machen und Wiederholen
Rückgängig machen
Befehl | : | Beschreibung |
---|---|---|
u | u undo | Machen Sie die letzte Änderung rückgängig |
5u | Die letzten fünf Änderungen rückgängig machen (beliebige Anzahl verwenden) |
Bitte beachten Sie, dass in Vim die 'letzte Änderung' je nach Modus variiert wird. Wenn Sie den Einfügemodus ( i ) aufrufen und einen ganzen Absatz eingeben, bevor Sie zum Normalmodus ( Esc ) zurückkehren, ist dieser gesamte Absatz der Fall als letzte Änderung betrachtet.
Wiederholen
Befehl | : | Beschreibung |
---|---|---|
Ctrl-R | red redo | Wiederholt die letzte rückgängig gemachte Änderung |
2Ctrl-R | Wiederholen Sie die beiden letzten rückgängig gemachten Änderungen (verwenden Sie eine beliebige Zahl). |
Es gibt eine andere Möglichkeit, Änderungen in Vim rückgängig zu machen und wiederherzustellen, die etwas anders behandelt werden. Wenn Sie eine Änderung mit u rückgängig machen, durchlaufen Sie die Knoten in einem 'Baum' Ihrer Änderungen, und drücken Sie die Tastenkombination Strg-R , um die Knoten in der Reihenfolge nach unten zu bewegen. (Der Undo-Baum ist ein separates Thema und zu komplex, um hier behandelt zu werden.)
Sie können auch U (also Großbuchstaben) verwenden, um alle letzten Änderungen in einer einzelnen Zeile (der Zeile, in der Ihre letzten Änderungen vorgenommen wurden) zu entfernen. Dies schließt nicht die Knoten des Baumes in der gleichen Weise wie u durchlaufen. Mit U zählt tatsächlich als eine Änderung selbst - ein anderen Knoten vorwärts auf dem Baum - so dass , wenn Sie U ein zweites Mal unmittelbar nach dem ersten Drücken sie als Redo - Befehl handeln.
Jeder hat seine Verwendung, aber u / : undo
sollte die meisten einfachen Fälle abdecken.
Wiederholen Sie die letzte Änderung
Der Befehl Wiederholen, der mit der Punkt- oder Punkttaste ( . ) Ausgeführt wird, ist nützlicher als er zuerst erscheint. Einmal erlernt, werden Sie es oft verwenden.
Befehl | : | Beschreibung |
---|---|---|
. | Wiederholen Sie die letzte Änderung | |
10 | Wiederholen Sie die letzte Änderung 10 Mal |
Also dann, für ein sehr einfaches Beispiel, wenn Sie eine Änderung an Zeile macht 1 durch i eingeben I
Esc, mit folgendem Ergebnis:
1 I made a mistake
2 made a mistake
3 made a mistake
Der Cursor befindet sich an Position 1 der Zeile 1, und Sie müssen nur noch j drücken, um die nächsten beiden Zeilen zu fixieren . zweimal - das heißt, j bewegt sich eine Zeile nach unten und . Um die letzte Änderung zu wiederholen, war das Hinzufügen des I
. Sie müssen nicht zweimal in den Einfügemodus zurückspringen, um diese Zeilen zu korrigieren.
Es wird viel leistungsfähiger, wenn es verwendet wird, um Makros zu wiederholen.
Kopieren, Ausschneiden und Einfügen
In Vim werden diese Operationen anders gehandhabt als in fast jedem anderen modernen Editor oder Textverarbeitungsprogramm ( Ctrl-C , Ctrl-X , Ctrl-V ). Um dies zu verstehen, müssen Sie etwas über Register und Bewegungen wissen.
Hinweis: In diesem Abschnitt wird das Kopieren und Ausschneiden von Bildern oder das Riechen des Bereichs nicht behandelt, da dies nicht in den normalen Modus und die grundlegende Bearbeitung fällt.
Register
Vim verwendet das Konzept von Registern , um mit dem Verschieben von Text innerhalb des Programms selbst umzugehen. Windows verfügt zu diesem Zweck über eine einzige Zwischenablage, die einem einzelnen Register in Vim entspricht. Beim Kopieren, Ausschneiden und Einfügen in Vim gibt es Möglichkeiten, einen ähnlich einfachen Bearbeitungsworkflow zu verwenden (bei dem Sie nicht über Register nachdenken müssen), es gibt jedoch auch viel komplexere Möglichkeiten.
Ein Register dient der Eingabe / Ausgabe eines Befehls, indem dem Befehl "" und einem Kleinbuchstaben vorangestellt wird.
Bewegungen
Eine Bewegung in Vim ist ein Befehl, der die Cursorposition an eine andere Stelle verschiebt. Beim Kopieren, Ausschneiden und Einfügen im Normalmodus sind die Möglichkeiten der Textauswahl für die Bewegung nur durch Ihr Bewegungswissen eingeschränkt. Einige werden unten veranschaulicht.
Kopieren und Schneiden
Die Grundbefehle zum Kopieren und Ausschneiden basieren auf y ('yank' zum Kopieren) und d ('delete', zum Ausschneiden). Die Ähnlichkeiten werden in der folgenden Tabelle angezeigt.
Befehl | : | Beschreibung |
---|---|---|
y {Bewegung} | Kopieren Sie den durch die Bewegung angegebenen Text in das Standardregister | |
yy | Kopieren Sie die aktuelle Zeile in das Standardregister, linewise | |
Y | Kopieren Sie die aktuelle Zeile in das Standardregister (Synonym für yy ). | |
"ayiw | Kopieren Sie das Wort, auf dem sich der Cursor befindet, in das Register 'a'. | |
20 "byy | Kopiere zwanzig Zeilen, beginnend mit dem Cursor, in das Register 'b'. | |
d {Bewegung} | Schneiden Sie den durch die Bewegung angezeigten Text in das Standardregister | |
dd | Schneiden Sie die aktuelle Zeile in das Standardregister, linewise | |
D | Schneiden Sie vom Cursor bis zum Zeilenende in das Standardregister (KEIN Synonym für dd ) | |
"adiw | Schneiden Sie das Wort, auf dem sich der Cursor befindet, in das Register 'a'. | |
20 "bdd | Schneiden Sie zwanzig Zeilen ab dem Cursor in das Register 'b'. |
Hinweis: Wenn etwas kopiert oder zeilenweise ausgeschnitten wird , wird durch das unten dargestellte Einfügeverhalten Text vor oder hinter der aktuellen Zeile (anstelle des Cursors) eingefügt . Beispiele folgen zur Verdeutlichung.
Einfügen
Es gibt verschiedene Möglichkeiten, in Vim einzufügen, je nachdem, was Sie erreichen möchten.
Befehl | : | Beschreibung |
---|---|---|
p | Fügen Sie nach dem Cursor das ein, was sich im Standardregister befindet | |
P | Fügen Sie das, was sich im Standardregister befindet, vor dem Cursor ein | |
"ap | Fügen Sie den Inhalt des Registers 'a' nach dem Cursor ein | |
"cP | Fügen Sie den Inhalt des Registers 'c' vor dem Cursor ein |
Wie führe ich ein wirklich einfaches Ausschneiden und Einfügen aus?
Wenn ich folgenden Text habe:
1 This line should be second
2 This line should be first
Ich kann das einfachste Ausschneiden und Einfügen durchführen, indem ich den Cursor irgendwo in Zeile 1 platziere und ddp eingebe . Hier sind die Ergebnisse:
1 This line should be first
2 This line should be second
Was ist passiert? dd ‚Cuts‘ die erste Zeile (linewise) in das Standardverzeichnis - die nur eine Sache zu einer Zeit, wie die Windows - Zwischenablage enthalten - und p Pasten der Linie nach dem aktuellen, die aufgrund des Befehls dd gerade geändert hat.
Hier ist ein nicht ganz einfaches Beispiel. Ich muss ein paar Worte bewegen. (Dies ist nicht notwendig, aber Sie können dieses Prinzip auf größere Codeabschnitte anwenden.)
1 These words order out are of
Ich kann w wiederholen, um zum 'o' am Anfang von 'order' zu gelangen (oder b, wenn ich es einfach getippt und meinen Fehler erkannt habe).
Dann "bitte" , um "Ordnung" in Register "a" zu setzen.
Dann w auf den ‚a‘ in ‚sind‘ zu bekommen.
Im Anschluss würde ich "bdaw" eingeben , um "are" in das Register "b" zu setzen. Nun habe ich folgendes angezeigt:
1 These words out of
Um klar zu sein, jetzt ist 'order' im Register 'a' und 'are' ist im Register 'b' wie zwei separate Zwischenablagen.
Um die Wörter richtig zu ordnen, tippe ich b , um zum 'o' in 'out' zu gelangen, und dann "bP to put" sind "from register" b "vor" out ":
1 These words are out of
Jetzt gebe ich A ein , um zum Ende der Zeile zu gelangen, gefolgt von Space Esc (vorausgesetzt, es gibt kein Leerzeichen nach 'of') und "ap" , um 'order' dort zu platzieren, wo es hingehört.
1 These words are out of order
Fertigstellung
Mit der Vervollständigung können Sie die in einem Dokument verwendeten Wörter abgleichen. Wenn Sie ein Wort eingeben, stimmen Sie mit Strg p oder Strg n mit vorherigen oder nächsten ähnlichen Wörtern im Dokument überein.
Dies kann sogar mit dem Strg-X- Modus kombiniert werden, um ganze Zeilen zu vervollständigen. Geben Sie beispielsweise Folgendes ein:
This is an example sentence.
Gehen Sie dann zur nächsten Zeile und geben Sie den gleichen Satz ein:
Thi
und dann Strg p drücken, was zu folgenden Ergebnissen führt:
This
Wenn Sie sich noch im Einfügemodus befinden, drücken Sie Strg x Strg p, und das nächste Wort wird beendet.
This is
Fahren Sie mit Strg x Strg p fort, bis die gesamte Zeile abgeschlossen ist.
Wenn Sie wissen, dass Sie eine komplette Zeile abschließen möchten, geben Sie Folgendes ein:
This is an example sentence.
dann in der nächsten Zeile:
Thi
und drücken Sie x Ctrl l , um die Zeile zu vervollständigen.
Wenn der Abschluss eines Dateinamens erfolgt, kann mit Strg x Strg f dieses Verzeichnis vervollständigt werden. Art:
~/Deskt
dann drücke Strg x Strg f und:
~/Desktop
wird abgeschlossen (wenn an diesem Ort). Ctrl x Ctrl f kann dann wiederholt zum Auflisten der Dateien auf dem Desktop verwendet werden.