Suche…


Makro aufnehmen

Eine Möglichkeit, ein Makro zu erstellen, besteht darin, es aufzuzeichnen .

Starten Sie die Aufnahme eines Makros und speichern Sie es in einem Register (in diesem Beispiel verwenden wir a , es kann jedoch ein beliebiges Register sein, zu dem Sie normalerweise Text hinzureißen könnten)

qa

Führen Sie dann die Befehle aus, die Sie im Makro aufnehmen möchten (hier umgeben wir den Inhalt einer Zeile mit <li> -Tags):

I<li><ESC>A</li>

Wenn Sie mit den Befehlen fertig sind, die Sie im Makro aufnehmen möchten, stoppen Sie die Aufzeichnung:

q

Wenn Sie nun die in a gespeicherte aufgezeichnete Befehlsfolge ausführen möchten, verwenden Sie:

@a

und vim wiederholt die aufgezeichnete Sequenz.

Nächstes Mal, wenn Sie das zuletzt verwendete Makro wiederholen möchten, können Sie den Typ @ doppelt @ :

@@

Und als zusätzlichen Bonus ist es gut, sich daran zu erinnern, dass eine Zahl vor einem Befehl so oft wiederholt wird. So wiederholen Sie das Makro in dem Register gespeichert a 20 - mal mit:

20@a

Bearbeiten eines Vim-Makros

Manchmal machen Sie einen Fehler mit einem längeren Makro, aber bearbeiten Sie es lieber, als es vollständig neu aufzuzeichnen. Sie können dies mit dem folgenden Verfahren tun:

  1. Setzen Sie das Makro in eine leere Zeile mit "<register>p .

    Wenn Ihr Makro in Register a gespeichert ist, lautet der Befehl "ap .

  2. Bearbeiten Sie das Makro nach Bedarf.

  3. Ziehen Sie das Makro in das richtige Register, indem Sie den Cursor an den Anfang der Zeile bewegen und "<register>y$ .

    Sie können das Originalregister erneut verwenden oder ein anderes verwenden. Wenn Sie Register b möchten, lautet der Befehl "by$ ." Oder mit "<register>d$ (löscht die nicht verwendete Zeile)

Rekursive Makros

Vim-Makros können auch rekursiv sein. Dies ist nützlich, wenn Sie bis zum Ende der Datei auf jede Zeile (oder jedes andere Textobjekt) zugreifen müssen.

Beginnen Sie mit einem leeren Register, um ein rekursives Makro aufzuzeichnen. (Ein Register kann mit q<register>q geleert werden.)

Wählen Sie einen konsistenten Startpunkt für jede Linie, um zu beginnen und zu beenden.

Rufen Sie vor dem Beenden der Aufzeichnung das Makro selbst als letzten Befehl auf. (Deshalb muss das Register leer sein: Es wird also nichts unternommen, da das Makro noch nicht vorhanden ist).

Beispiel, gegeben den Text:

line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???

Im Normalmodus kann man mit dem Cursor in der ersten Zeile und einem leeren Register a dieses Makro aufzeichnen:

qaI"<Esc>A"<Esc>j@aq

Bei einem einzigen Aufruf von @a würden sich nun alle Zeilen der Datei in doppelte Anführungszeichen setzen.

Was ist ein Makro?

Ein Makro ist eine Reihe von Tastenanschlägen, die von Vim ohne Verzögerung "wiedergegeben" werden sollen. Makros können in Registern oder Variablen gespeichert, an Tasten gebunden oder in der Befehlszeile ausgeführt werden.

Hier ist ein einfaches Makro, das das dritte word in einer Zeile abdeckt:

0wwgUiw

Dieses Makro könnte in Register q aufgezeichnet werden:

qq         start recording into register q
0wwgUiw    
q          stop recording

oder direkt im Register gespeichert q :

:let @q = '0wwgUiw'

abgespielt werden mit:

@q

Es könnte aber auch direkt in die Befehlszeile eingegeben werden:

:normal 0wwgUiw

für sofortige Wiedergabe über den Befehl :normal .

Oder in eine Variable schreiben:

:let myvar = '0wwgUiw'

abgespielt werden mit:

@=myvar

Oder als Mapping gespeichert:

nnoremap <key> 0wwgUiw

Wiedergabe durch Drücken der <key> .

Wenn Sie ein Makro zur späteren Wiederverwendung speichern möchten, können Sie den Einfügemodus eingeben:

<C-r>q

Dadurch wird das Makro in Register q 0wwgUiw (in diesem Beispiel: 0wwgUiw ). Sie können diese Ausgabe verwenden, um z. B. das Makro in Ihrer vimrc zu definieren:

let @q='0wwgUiw'

Auf diese Weise wird das Register q bei jedem Start von vim mit diesem Makro initialisiert.

Aktion aufnehmen und wiedergeben (Makros)

Mit dem Befehl q wir eine Menge langwieriger Arbeit in vim vereinfachen.

Beispiel 1. Erzeugen Sie eine Array-Sequenz (1 bis 20).

SCHRITT 1. Drücken Sie i , um den Einfügemodus zu aktivieren. Geben Sie 1

1

SCHRITT 2. Nehmen Sie folgende Aktion auf: "Hängen Sie die letzte Nummer an die nächste Zeile an und erhöhen Sie die Nummer"

  1. esc , um den Eingabemodus zu verlassen
  2. qa um in den Aufzeichnungsmodus zu wechseln, und verwenden Sie dabei den Puffer a
  3. yy und p um die aktuelle Zeile zu kopieren und als nächste Zeile einzufügen
  4. ctrl + A a um die Nummer zu ctrl
  5. q erneut q ein, um die Aufnahme zu beenden
1
2

SCHRITT 3. Aktion 18 Mal wiederholen .

Geben Sie 18@a um Aktion 3 und Aktion 4 in Schritt 2 wiederzugeben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow