Heim  >  Artikel  >  System-Tutorial  >  Entdecken Sie die erweiterten Betriebsfähigkeiten von VIM

Entdecken Sie die erweiterten Betriebsfähigkeiten von VIM

WBOY
WBOYnach vorne
2024-01-05 10:52:02926Durchsuche
Einführung In diesem Artikel werden einige einfache VIM-Vorgänge zusammengestellt, die von anderen normalen Texteditoren entweder nicht ausgeführt werden können oder nur sehr langsam ausgeführt werden. Durch die Einführung dieses Artikels können Anfänger ihre Entschlossenheit und ihr Selbstvertrauen beim Erlernen von VIM stärken. Wenn Sie gute einfache Techniken haben, die sich leicht demonstrieren lassen, hinterlassen Sie bitte eine Nachricht. Darüber hinaus wird bei den in diesem Artikel genannten Schlüsseln, sofern nicht anders angegeben, die Groß-/Kleinschreibung beachtet. Wenn der Text beispielsweise „Drücken Sie G“ lautet, sollte die Taste, die Sie drücken, „Umschalt + G“ lauten.

Entdecken Sie die erweiterten Betriebsfähigkeiten von VIM

1. Vorbereitung

Zuerst öffnen wir VIM und geben einen Text für die heutige Demonstration ein:

this is a test
2. Suchen und ersetzen

Drücken Sie mehrmals ESC, um in den Normalmodus zu gelangen, und geben Sie den folgenden Befehl ein: :%s/ /r/g/ . Der nach dem Drücken der Eingabetaste erzielte Effekt ist wie folgt:

this
is
a
test

Erklärung: Die Funktion dieses Befehls besteht darin, alle Leerzeichen im Artikel durch Wagenrückläufe zu ersetzen. Fast alle Editoren unterstützen das Suchen und Ersetzen, aber nicht alle Editoren unterstützen das Ersetzen von Leerzeichen durch Wagenrückläufe, sodass diese Funktion in vielen anderen Editoren relativ umständlich zu implementieren ist.

3. Linienspleißen

Gerade haben wir eine Textzeile in vier Zeilen aufgeteilt. Wie fügen wir sie wieder zusammen? Natürlich können wir die oben erwähnte Such- und Ersetzungsmethode verwenden, um Zeilen zu verbinden, indem wir Wagenrückläufe durch Leerzeichen ersetzen. Hier verwenden wir jedoch eine andere Methode.

Drücken Sie mehrmals ESC, um in den Normalmodus zu gelangen, und geben Sie dann diesen Befehl ein: ggVG. gg bedeutet, zum Anfang des Textes zu springen, V bedeutet, in den Zeilenauswahlmodus zu wechseln und G bedeutet, bis zum Ende des Artikels auszuwählen. Mit diesen 3 Befehlen und insgesamt 4 Tastenanschlägen haben wir den gesamten Artikel ausgewählt.

Drücken Sie dann den Doppelpunkt:, um in den Befehlsmodus zu gelangen. Geben Sie danach j ein und drücken Sie die Eingabetaste ​Wiederum sind für den gesamten Vorgang einschließlich der Eingabetaste nur 7 Tastendrücke erforderlich:

this is a test
4. Aktionen kopieren, einfügen und wiederholen

Drücken Sie mehrmals ESC, um zu bestätigen, dass Sie sich im Normalmodus befinden, und drücken Sie dann yy

, um die aktuelle Zeile in das Standardregister (entspricht der Zwischenablage) zu kopieren. Drücken Sie dann 12p, VIM führt den Einfügevorgang 12 Mal aus und 13 Zeilen mit Zeichen wie diesem werden auf dem Bildschirm angezeigt:

this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
Erklärung: In VIM sind Kopier- und Einfügevorgänge sehr schnell. Darüber hinaus können die meisten Befehle in VIM mehrmals wiederholt werden, indem vor dem Befehl eine Zahl hinzugefügt wird.

5. Spaltenoperationen

Als nächstes ändern wir den ersten Buchstaben am Anfang jeder Zeile in einen Großbuchstaben.

Drücken Sie ESC mehrmals, um zu bestätigen, dass Sie sich im Normalmodus befinden, drücken Sie dann gg, um zur ersten Zeile zu springen, und drücken Sie

Strg + v

, um in den Spaltenauswahlmodus zu gelangen (wenn Sie Strg + v drücken und nicht in den Spaltenauswahlmodus gelangen). , siehe hier), und drücken Sie dann G, um zur letzten Zeile des Artikels zu springen. An diesem Punkt sollten Sie sehen, dass die erste Textspalte ausgewählt ist, und zwar nur die erste Spalte. Drücken Sie die U-Taste und Sie werden sehen, dass der erste Buchstabe jeder Zeile in einen Großbuchstaben umgewandelt wird. Tipp: Nachdem Sie den Text ausgewählt haben, drücken Sie u, um den Text in Kleinbuchstaben umzuwandeln. Nachdem Sie den Text ausgewählt haben, drücken Sie ~, um die ursprüngliche Schreibweise umzukehren.

This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
Dann fügen wir vor jeder Zeile ein Sternchen ein. Drücken Sie gg, um zur ersten Zeile zu springen, drücken Sie

Strg + v

, um den Spaltenauswahlmodus aufzurufen, drücken Sie dann G, um die erste Spalte des Volltextes auszuwählen, drücken Sie dann I, um in den Spalteneinfügungsstatus zu gelangen, geben Sie ein Sternchen * ein und drücken Sie dann ESC. Sie werden sehen, dass allen Zeilen ein Sternchen vorangestellt ist:

*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
Erklärung: Für Leute, die Programme schreiben, ist das stapelweise Auskommentieren eines Codeabschnitts ein sehr häufiger Vorgang. Dies kann einfach durch Spalteneinfügung erfolgen. Darüber hinaus können Sie nach Auswahl einer Spalte x drücken, um die ausgewählten Blöcke zu löschen, und Sie können die Kommentare stapelweise entfernen.

6. Makroaufnahme

Als nächstes möchten wir die gerade Textzeile ändern in: Dies ist ein weiterer Test

. Da alle Zeilen mit geraden Nummern denselben Vorgang ausführen müssen, können wir die Arbeit schnell abschließen, indem wir diesen Vorgang aufzeichnen und ihn dann mehrmals wiederholen. Drücken Sie zunächst mehrmals ESC, um zu bestätigen, dass Sie sich im Normalmodus befinden. Drücken Sie dann gg, um zur ersten Zeile zu springen und den Start des Betriebs vorzubereiten. Wir drücken zuerst die q-Taste und drücken dann einen anderen Buchstaben, um dieses Makro in dem diesem Buchstaben entsprechenden Register aufzuzeichnen. Wenn wir hier beispielsweise das m-Register verwenden, drücken Sie qm. Zu diesem Zeitpunkt erscheint das Wort „Aufzeichnung“ in der VIM-Statusleiste, was darauf hinweist, dass der Aufzeichnungsstatus eingegeben wurde.

然后,我们把第二行的 a 修改为 another。首先按 j 进入第二行,然后按 $ 跳到行末,再按两下 b 往前跳两个单词,此时光标停在字母 a 上。然后我们按下 caw键删除 a 并进入插入状态,然后输入 another ,按 ESC 回到 Normal 状态,按 j 进入下一行,整个操作步骤就完成了。最后,我们再按一下 q,结束该宏的录制。

接下来我们播放这个宏,完成整个操作步骤。在键盘上输入 1000@m,表示将 m 寄存器里的宏播放 1000 次,马上可以看到,文章中所有偶数行的 a 都变成了 another。

*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test

解说:虽然我们指定播放 1000 次,但事实上,执行到第 6 次的时候,光标挪到了屏幕最下方,于是执行过程就自动停止了。因此,在批量操作的时候,我们可以指定足够大的数字,而不用担心出现问题。

另外,修改 a 的时候,我们跳到行末后再使用 b 命令以单词为单位跳转,而没使用 h 一个字母一个字母往回挪,我们使用caw 修改整个单词,而不使用 s 命令删除单个字母并进入 Insert模式。这些细节可以保证录制得到的宏更具有一般性。

7. 行尾块操作

注:本章由 Jason Han 网友贡献,感谢他来信指出滇狐原先对于行尾块操作理解的错误。

下面,我们要在每行的尾部都添加一个感叹号。之前我们在每行头部添加一个星号的时候,用的是 Ctrl-V 列操作。现在要在行尾添加,能不能继续用列操作呢?直观上似乎是不行的,每行的长度不一样,行尾位置参差不齐,如何使用列模式往行尾添加东西呢?

事实上,Vim 提供了一种特殊的列模式,叫做行尾块模式,也就是说,我们是可以通过 Ctrl-V模式来选中长度不同的行的行尾,然后对行尾作统一操作的,操作步骤如下:

按下 gg 跳到第一行,按 Ctrl-V 进入列选择模式,再按 G,选中全文的第一列,然后按下 $,进入行尾块模式,按下 A,进入块插入状态,输入星号 !,再按下 ESC,你会看到,所有行尾部都出现了一个感叹号:

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
8. 点命令

接下来,我们在每行的末尾加上一个小于号 。

由于我们需要在每行后面添加新行,因此我们无法使用块选择方式批量添加小于大于号。使用宏录制的方式是可以做到这点的,但操作稍嫌繁琐了一些。使用点命令,可以非常方便地做到这一点。

先按几下 ESC 确认当前出于 Normal 模式,然后使用 gg 跳到第一行,按 A 进行行尾插入,输入 ,最后 ESC 回到 Normal 状态,第一行修改就完成了。

然后,我们按 j 进入下一行,也就是第三行,再按 .,可以看到,第三行尾部也出现了小于号,并且自动添加了第四行的大于号。反复按j.j.j. ,直到每一行都完成了这个编辑动作为止。

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!

解说:点命令的作用是,重复最近一次所做的编辑操作。由于在第一行里做的操作是行尾添加并插入新行,因此在第三行(原先的第二行)重复这个动作的时候,也会在行尾添加同样的字符。点命令功能不如宏强大,但它使用起来比宏简便,因此也有着广泛的用途。

Das obige ist der detaillierte Inhalt vonEntdecken Sie die erweiterten Betriebsfähigkeiten von VIM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen