Was sind Vim-Register?

Was Sind Vim Register



Vim-Register sind Speicherblöcke, die zum Speichern von gelöschtem Text und Operationen verwendet werden. Auf diese Register kann über ihre Tag-Namen zugegriffen werden, bei denen es sich um eine Zahl, einen Buchstaben oder ein Symbol handeln kann.

Wenn Sie Vim verwenden, müssen Sie die Vim-Register verwenden. Jedes Mal, wenn Sie Text kopieren/löschen oder eine Befehlsoperation ausführen, speichert Vim diese Informationen in den Registern. Wenn Sie es einfügen, ruft Vim die Daten aus dem Register ab und zeichnet sie in den Puffer. Mit anderen Worten: Vim-Register fungieren als Zwischenablage zum Speichern des Text- und Befehlsverlaufs.

Vim verfügt über insgesamt 10 verschiedene Registertypen, von denen jeder einem bestimmten Zweck dient. In diesem Tutorial werde ich Vim-Register, ihre Typen und Verwendung untersuchen.







Notiz : Für dieses Tutorial führe ich Befehle unter macOS aus. Vim ist eine plattformübergreifende Anwendung, daher gelten die in diesem Handbuch erwähnten Befehle für alle Vim-Versionen, unabhängig vom Betriebssystem.



Vim-Registeroperatoren

Die Register in Vim können durch Operationen wie Kopieren, Löschen oder Ändern verwendet werden. Für jede Operation gibt es spezifische Operatoren, z. B. wird zum Herausziehen von Text der Operator y verwendet, während zum Löschen von Text der Operator d verwendet wird. Nachfolgend finden Sie eine Liste häufig eingesetzter Operatoren:

jj Reißt (kopiert) die Zeile
dd Löscht die Zeile
cc Löscht die Zeile und aktiviert den INSERT-Modus
S Löscht das Zeichen und startet den INSERT-Modus zum Ersetzen
X Löscht das Zeichen unter dem Cursor
q Makro; speichert den Befehlssatz in einem bestimmten Register

Um den gespeicherten Text auszudrucken, P oder P Operatoren werden verwendet:

P Fügen Sie den Text hinter dem Cursor ein
P Platzieren Sie den Text vor dem Cursor

Diese Befehle zählen auch. Um beispielsweise 10 Zeilen zu kopieren, verwenden Sie die 10Jahre Befehl, ähnlich zum Einfügen der 10 Kopien einer gezogenen Zeile 10p .

Auflistung von Registern

Um alle Register aufzulisten, verwenden Sie die :registrieren oder :reg Befehl, und um das spezifische Register aufzulisten, verwenden Sie den :reg, wobei der Registername ist (z. B. 0-9, a-z).

Um den Inhalt mehrerer Register aufzulisten, verwenden Sie auf die gleiche Weise die :reg „ Befehl.

In der Registerliste sehen Sie drei Spalten: Name, Typ und Inhalt . Hier bedeutet der Typ den Inhaltstyp, nicht den Registertyp. Drei Typen Der Inhalt kann mit Registern geändert werden.

  • l : Zeilenweise
  • C : Charakterlich
  • B : Blockweise

Zum Beispiel, wenn der Inhalt zeilenweise kopiert wird (jj) dann wird der Inhaltstyp sein l , wenn es charakterlich ist (Ja) dann wird der Typ sein C , und wenn der Inhalt blockweise kopiert wird (Strg+V und Y) dann wird der Typ als angezeigt B .

Arbeiten mit Vim-Registern

Vim-Register können zum Speichern des Inhalts mithilfe der Operatoren „Yank“, „Delete“ und „Change“ verwendet werden. Auf den gespeicherten Inhalt kann mit den Put-Operatoren zugegriffen werden.

Text in einem Register speichern
Wenn Sie die Taste drücken jj Wenn Sie zum Kopieren einer Zeile die Taste drücken, wird diese im Standardregister, dem unbenannten Register, gespeichert („“) . Um die kopierte Zeile in einem bestimmten Register, dem Zitat, zu speichern (“) gefolgt vom Registernamen und dem Operator.

Zum Beispiel, um eine Zeile in einen Registernamen zu kopieren Mit verwenden ' Zyy . Wenn Sie im VISUAL-Modus mehrere Zeilen ausgewählt haben, verwenden Sie ebenfalls „ zy um die Zeilen im Z-Register zu speichern.

Zugriff auf das Register
Um auf das Vim-Register zuzugreifen, das Zitat (“) Das Symbol wird mit dem Registernamen und verwendet p/P Operator.

'S

Wenn der Registername beispielsweise z lautet und Sie auf den Inhalt dieses Registers zugreifen möchten, verwenden Sie „ zp im NORMAL-Modus. Um jedoch denselben Vorgang im INSERT-Modus auszuführen, verwenden Sie Strg+r z .

Normaler Modus Um den Inhalt zu speichern, verwenden Sie quote (“) , Registername (a-z) , und Operator (y, JJ, T, C oder CC)
S Normaler Modus Um den Inhalt eines Registers einzufügen, verwenden Sie Anführungszeichen (“) , Registername (a-z) Und p/P Operator
Strg+r INSERT-Modus Um den Inhalt eines Registers einzufügen, verwenden Sie Strg+r und Registernamen (a-z)

Sie kennen die Grundidee der Vim-Register. Jetzt werde ich jeden Registertyp und seine Verwendung ausführlich besprechen.

Arten von Vim-Registern

In Vim gibt es 10 Arten von Registern, die für bestimmte Zwecke konzipiert sind.

  1. Unbenanntes Register („“)
  2. Nummerierte Register (0-9)
  3. Kleines Löschregister („-)“
  4. Benannte Register (a-z oder A-Z)
  5. Nur-Lese-Register („:“, „., „%)
  6. Alternatives Dateiregister („#“)
  7. Ausdrucksregister („=)
  8. Auswahl- und Drop-Register („*, „+, +~)“
  9. Schwarzes-Loch-Register („_“)
  10. Letztes Suchmusterregister („/“)

1. Unbenanntes Register („“)

Es ist das Standardregister von Vim, in dem gelöschter oder gelöschter Text gespeichert wird y, yy, d, dd, s, oder X Befehle.

Der :reg „“ Mit dem Befehl kann der im unbenannten Register gespeicherte Inhalt aufgelistet werden.

Um den unbenannten Registerinhalt einzufügen, verwenden Sie den Befehl put (p oder P) Befehl. Standardmäßig ist die P Der Befehl fügt die Inhaltsspeicher in das unbenannte Register ein. Alternativ können die im unbenannten Register gespeicherten Daten auch mit dem Befehl „“p eingefügt werden.

Im folgenden Beispiel habe ich eine Zeile mit kopiert jj Befehl und setzen Sie es dann 5 Mal mit count 5 mit p (5p).

2. Nummerierte Register (0-9)

Die nummerierten Register werden zum Speichern des zuletzt entfernten oder gelöschten Textes verwendet.

Das Register 0 unterscheidet sich von Registern 1-9 . Das Register 0 speichert immer den zuletzt gezogenen Text. Zum Beispiel, wenn ich eine Linie mit ziehe jj Befehl wird die Zeile in beiden gespeichert unbenannt und das 0 registriert.

Wenn ich nun eine Zeile mit lösche dd , wird die gelöschte Zeile im unbenannten Register und Register gespeichert 1 während der zuletzt gezogene Text im Register bleibt 0 . So kann jederzeit über die Registrierung auf den zuletzt gelöschten Text zugegriffen werden 0 .

Die Register 1-9 Speichern Sie den zuletzt gelöschten Text. Wenn ich beispielsweise eine Zeile mit dem lösche dd Befehl wird der gelöschte Text sowohl im unbenannten als auch im Register gespeichert 1 . Register 1 speichert den zuletzt gelöschten Text. Wenn ich eine weitere Zeile lösche, wird der zuvor gelöschte Text in das Register verschoben 2 , und die neueste wird im unbenannten und Register gespeichert 1 . Im Wesentlichen die nummerierten Register (1-9) Speichern Sie den Verlauf des gelöschten Texts.

Lassen Sie uns das nummerierte Register anhand eines Beispiels verstehen. Die folgende Vim-Textdatei besteht aus 10 Zeilen; lass uns das reißen Zeile 3 verwenden jj Befehl. Lassen Sie uns nun den Status der Register mit dem Befehl :reg überprüfen.

Die gerissene Leitung befindet sich derzeit in der unbenannt Und 0 registriert. Lassen Sie uns nun alle Zeilen einzeln mit löschen dd Befehl. Also, zuletzt Zeile 10 werden im unbenannten Register und Register 1 sein. Gleichzeitig werden andere gelöschte Zeilen in Registern gespeichert 2-9 in aufsteigender Reihenfolge.

Auf diese Zeilen kann über zugegriffen werden P Befehl. Zum Beispiel, um den Text des Registers einzufügen 9 verwenden „21 Uhr . Darüber hinaus, wenn Sie den Wert des Registers eingeben möchten 9 5 mal verwenden „95p .

3. Kleines Löschregister („-)“

Dieses Register speichert den gelöschten Text, wenn er kürzer als eine Zeile ist, mithilfe von Befehlen wie x, daw, diw, tupfen, Und wieder . Darüber hinaus, wenn Sie Text mit löschen VISUELL im Auswahlmodus, und wenn es weniger als eine Zeile ist, wird es im kleinen Löschregister gespeichert. In Vim bedeutet eine Zeile einen vollständigen Satz, der mit einem Punkt endet.

In der folgenden Datei habe ich beispielsweise drei Wörter ausgewählt Zusammenarbeit und Unterstützung aus Zeile Nummer 9 und löschte sie mit dem D Operator. Zum Speichern dieser Auswahl wird das kleine Löschregister verwendet, da es nicht länger als eine Zeile ist. Benutzen Sie die :reg „- Befehl zum Auflisten des Inhalts des kleinen Löschregisters.

4. Benannte Register (a-z oder A-Z)

Die genannten Register dienen der Speicherung benutzerspezifischer Texte. Wenn Sie also Text in einem benutzerdefinierten Register speichern möchten, dann 26 meldet sich ab A Zu Mit kann verwendet werden.

Zum Beispiel ziehe ich eine Zeile in der folgenden Datei mit „ Zyy , der Text wird im gespeichert Mit Registrieren Sie sich wie im folgenden Bild gezeigt.

Die in Klein- und Großbuchstaben genannten Register haben unterschiedliche Zwecke. Wenn der Text beispielsweise im Kleinbuchstabenregister gespeichert ist, wird zum Ersetzen des Textes dieses Registers das Kleinbuchstabenregister verwendet. Um den Text jedoch an das Kleinbuchstabenregister anzuhängen, wird das gleichnamige Großbuchstabenregister verwendet.

Lassen Sie es uns anhand eines Beispiels verstehen. Aus der folgenden Datei habe ich Zeile 8 im Register gespeichert X mit „ xyy .

Um nach dieser Zeile Text anzuhängen, wähle ich zunächst einige Wörter im VISUAL-Modus aus. Um den ausgewählten Text anzuhängen, verwende ich die „Xy Befehl.

Um den Text zu ersetzen, verwende ich erneut das „ xyy .

5. Nur-Lese-Register (., %, 🙂

Vim verfügt über 3 schreibgeschützte Register, in denen die eingefügten Daten gespeichert werden Text, Dateiname, Und zuletzt ausgeführt Befehl.

. Speichert den zuletzt eingefügten Text
% Speichert den Dateinamen
: Speichert den zuletzt ausgeführten Befehl

Diese Register können, wie der Name schon sagt, nicht geändert werden, sind jedoch leicht zugänglich.

Um den zuletzt eingefügten Text einzufügen, verwenden Sie die '.P Befehl.

Um den Dateinamen zu drucken, verwenden Sie die '%P Befehl.

Um den letzten Befehl auszudrucken, verwenden Sie die ':P.

Der @: Mit dem Befehl kann der vorherige Befehl in Vim wiederholt werden. Im folgenden Beispiel habe ich beim Drücken die ersten drei Zeilen gelöscht @: , 3 weitere Zeilen werden gelöscht, daher wird der vorherige Befehl wiederholt.

6. Alternatives Pufferregister („#“)

Der alternative Puffer ist eine Datei, die im aktuellen Puffer geöffnet wird. Das „#“-Register speichert den Dateinamen der gepufferten Datei im aktuellen Puffer. Öffnen wir mit dem eine weitere Datei im selben Puffer :e ~/.vimrc Beachten Sie, dass der aktuelle Dateiname lautet Datei.txt .

Um den geöffneten Puffer zu schließen, verwenden Sie die :bdelete oder :bwipeout Befehl. Jetzt ist es möglich, den im gespeicherten alternativen Dateinamen anzuzeigen „# registrieren.

7. Ausdrucksregister („=)

Das Ausdrucksregister ist ein eindeutiges Register, das nicht zum Speichern von Text, sondern zum Speichern des Ausdrucks verwendet wird. Wenn die Datei beispielsweise mehrere Zahlen enthält, werden zum Summieren dieser Zahlen Vim-Ausdrücke verwendet.

Auf dieses Register kann über zugegriffen werden „= im NORMAL-Modus und Strg+r = im INSERT-Modus.

Um beispielsweise die Differenz zwischen zwei Zahlen zu ermitteln, drücken Sie „=“ und das Gleichheitszeichen erscheint in der Statusleiste; Geben Sie nun beide Zahlen mit dem Minuszeichen (-) ein und drücken Sie die Eingeben Schlüssel. Um nun die Differenz auszudrucken, drücken Sie P oder nutzen Sie die :setzen Befehl.

Um auf den Wert des Ausdrucksregisters zuzugreifen, verwenden Sie die :reg „= Befehl.

Um den Absolutwert zweier Zahlen zu ermitteln, verwenden Sie in ähnlicher Weise die =abs(Wert1-Wert2) Ausdruck.

Ebenso kann dieses (Ausdrucks-)Register zum Speichern der Ausgabe des Systembefehls verwendet werden. Wenn ich beispielsweise den Inhalt der Datei lesen möchte, werde ich sie verwenden =system(‘cat ’) , beim Drücken der Return-Taste wird der Inhalt der Ausgabe gespeichert. Verwendung der P oder :setzen Mit dem Befehl kann der Inhalt der Ausgabe in den Puffer gestellt werden.

Es gibt eine Reihe von Ausdrücken, die in Vim verwendet werden können. Um mehr über Vim-Ausdrücke zu erfahren, verwenden Sie :Hilfe-Ausdruck Und :help Ausdruckssyntax Befehle.

8. Auswahl- und Drop-Register („*, „+, „~“)

Vim verfügt über zwei Auswahlregister „* (quotestar) und „+ (quoteplus), die zum Speichern des Textes aus der GUI verwendet werden. Diese Register werden zum Kopieren von Text aus externen Programmen wie Browsern oder anderen Textverarbeitungsprogrammen verwendet.

Wenn Sie beispielsweise eine Textauswahl aus einem Browser kopieren, verwenden Sie Strg+C oder cmd+c es wird im gespeichert „* registrieren. Sie können es jedoch nicht verwenden P oder :setzen um diesen Text in den Vim-Editor einzufügen. Verwenden '*P um den Text in den Vim-Editor einzufügen, der aus externen Anwendungen kopiert wird.

Es ist wichtig zu beachten, dass beides „+ Und „* Register sind mit der Zwischenablage verbunden, also beides („*p, „+p)“ kann verwendet werden, um den Text in den Vim-Editor einzufügen. Um Text aus Vim einzufügen, verwenden Sie ebenfalls „*jj Um eine Zeile zu ziehen und sie dann in eine beliebige GUI-Anwendung einzufügen, verwenden Sie Strg+v oder cmd+v.

Es ist unbedingt zu beachten, dass beide Register vorhanden sind (* & +) machen das Gleiche, worum geht es dann? Vim verfügt über zwei Auswahlregister „*, „+ macht die gleiche Aufgabe, und das liegt am X11-Fenstersystem. Der X11 bietet zwei Methoden zum Speichern des Textes, eine davon ist Auswahlen und das andere ist Schnittpuffer . Die Auswahl ist Eigentum der Anwendung und geht beim Schließen der Anwendung verloren, während Ausschneidepuffer den Text auf dem X-Server speichern. Für diese beiden Speicherarten werden die Register „*“ und „+“ verwendet. Um mehr darüber zu erfahren, verwenden Sie :help x11-Auswahl Befehl.

Als nächstes die Drop-Register „~ Hier wird der Text des letzten Drag-and-Drop-Vorgangs gespeichert. Wenn Sie beispielsweise eine Textauswahl aus einer externen Anwendung löschen, wird diese im Drop-Register gespeichert.

Wenn Ihnen das Einfügen aus der externen Anwendung mit drei verschiedenen Tasten Schwierigkeiten bereitet, können Sie die Auswahl so zuordnen, dass sie im unbenannten Register gespeichert wird.
Öffne das vimrc Datei, Platzset Zwischenablage=unbenannt darin und speichern Sie die Datei. Jetzt können Sie jedes Mal, wenn Sie aus einer externen Anwendung kopieren, es ganz einfach mit einfügen :setzen Befehl oder p-Taste.

Notiz : Das Drop-Register (~) ist nur verfügbar, wenn Vim mit +dnd kompiliert wird. Derzeit ist es nur für die GTK-GUI verfügbar.

9. Schwarzes-Loch-Register („_“)

Wenn Sie im Vim-Editor einen Kopier- oder Löschvorgang ausführen, wird der Text standardmäßig in den Registern gespeichert. Wenn Sie den Text löschen möchten, ohne ihn in einem Register zu speichern, verwenden Sie das Black-Hole-Register. Dieses Register ändert beim Löschen von Text nicht das unbenannte Register („“).

Wenn ich zum Beispiel alle Zeilen löschen möchte, ohne sie im unbenannten Register zu speichern, dann wähle ich zunächst alle Zeilen mit aus ggVG und dann drücken '_D Mit den Tasten löschen Sie alle Zeilen. Um eine einzelne Linie zu einem Schwarzen Loch zu löschen, verwenden Sie ebenfalls „_dd .

10. Letztes Suchmusterregister („/“)

Wie der Name schon sagt, speichert dieses Register das letzte Suchmuster mithilfe des / oder ? Betreiber. Zum Beispiel, wenn Sie suchen /Linux , dann verwenden '/P fügt das Linux-Wort ein.

Vim verwendet dieses Register für die Navigation mit dem N Und N Schlüssel nach der Suche.

Es handelt sich um ein beschreibbares Register, dessen Inhalt mit :let geändert werden kann. Um beispielsweise Linux in diesem Register zu speichern, verwenden Sie :let @/=’Linux’.

Register und Makros

In Vim werden die Makros ebenfalls in den benannten Registern (a-z) gespeichert. Wenn Sie Makros nicht kennen, handelt es sich bei Makros um in einem Register gespeicherte Einstellbefehle. Dieser Befehlssatz kann ausgeführt werden, indem einfach das @-Zeichen gefolgt vom Namen des Makroregisters verwendet wird. Im Wesentlichen machen Makros die wiederholte Eingabe mehrerer Befehle überflüssig.

Zum Beispiel, um ein Makro in einem Register zu speichern M , Ich werde benützen qm q . Ich möchte in die umziehen 5 Linien nach unten mit 5j und löschen Sie die Zeile mit dd . Verwenden, qm , um die Makroaufzeichnung zu starten, und drücken Sie dann 5j Und dd . Um nun die Makroaufzeichnung zu beenden, drücken Sie Q . Um zu überprüfen, ob das Makro gespeichert ist oder nicht, verwenden Sie: :reg „m oder :reg m.

Um diese Befehle mit einem Makroregister auszuführen, verwenden Sie die :@M Befehl.

Ein Register löschen

Es gibt keinen einfachen Ansatz zum Löschen eines Registers, da die meisten Register nicht gelöscht werden müssen, da sie irgendwann überschrieben werden. Es gibt jedoch einige Techniken, um einen Registerwert im Vim-Editor zu löschen.

1. Zeichnen Sie ein leeres Makro auf, um ein Register zu löschen. Um beispielsweise Register m zu löschen, verwenden Sie qmq .

2. Legen Sie mit den leeren Text fest lassen . Um beispielsweise das Register m zu löschen, verwenden Sie :let @m=“.

3. Verwenden Sie die setreg() Funktion mit einem leeren String als Argument. Um beispielsweise das Register zu löschen, verwenden Sie m :call setreg(‘m’, ”).

Abschluss

Es gibt 10 verschiedene Register mit unterschiedlichen Funktionalitäten, was es fast unmöglich macht, sich daran zu erinnern. Wenn Sie ein Anfänger sind, würde ich empfehlen, nur drei Register im Auge zu behalten, ein unbenanntes Register („“) , nummerierte Register (0-9) und benannte Register (a-z) .

Um Text in einem Register zu speichern, verwenden Sie ein Anführungszeichen (“) mit dem Registernamen unterschreiben, gefolgt von einem Bedienerbefehl (y, d, c) . Um den Text aus einem Register einzufügen, verwenden Sie p- oder P-Befehle mit vorangestelltem Anführungszeichen (“) und Registernamen.

Sie haben sicher schon davon gehört: Wenn Sie eine Aufgabe mehr als zweimal erledigen, dann automatisieren Sie sie. Vim-Register können äußerst nützlich sein, um Aufgaben zu automatisieren und letztendlich das Erlebnis zu verbessern. Um mehr über Vim-Register zu erfahren, verwenden Sie die :help registriert sich Befehl.