Bei der Verwendung von GUI-basierten Text-/Quellcode-Editoren sind einige Funktionen selbstverständlich, z. B. das Auswählen von Text. Ich meine, die meisten von uns werden dies nicht einmal mehr als Feature betrachten. Aber das ist bei kommandozeilenbasierten Editoren wie Vim nicht der Fall. Speziell für Vim müssen Sie, wenn Sie nur die Tastatur verwenden, bestimmte Befehle lernen, um Text so auszuwählen, wie Sie es möchten. In diesem Tutorial werden wir diese Funktion sowie die 'marks'-Funktion von Vim im Detail besprechen.
But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 16.04, and the Vim version we've used is 7.4.
Angenommen, Sie haben Grundkenntnisse über den Vim-Editor (Nein? Kein Problem, gehen Sie einfach hierher), würden Sie wissen, dass Sie mit dem Befehl 'd' eine Zeile ausschneiden/löschen können. Aber was ist, wenn Sie beispielsweise 3 Zeilen schneiden möchten? Ihre Antwort könnte lauten:„wiederhole den Befehl dreimal“. Gut, aber was ist, wenn die Anforderung darin besteht, einen kompletten Absatz (oder, sagen wir, ein paar davon) zu kürzen? Ist es eine praktische Lösung, zuerst die Anzahl der Zeilen manuell zu zählen und dann den Befehl 'd' auszuführen (auch wenn Sie '[n]dd' verwenden)?
Nein, ist es nicht. Eine bessere Lösung wäre in diesem Fall, die Zeilen auszuwählen, die Sie ausschneiden/löschen möchten, und dann den Befehl „d“ nur einmal auszuführen. Hier ist ein Beispiel:
Angenommen, ich möchte den gesamten ersten Absatz des Abschnitts EINFÜHRUNG ausschneiden/löschen, der im folgenden Screenshot gezeigt wird:
Was ich also tun werde, ist, ich bringe den Cursor an den Anfang der ersten Zeile und tippe (achte darauf, dass ich den Einfügemodus verlassen habe) den Befehl „V“ (Umschalt+v). Dies führt dazu, dass die erste Zeile ausgewählt wird und Vim den Visual Line-Modus aktiviert.
Jetzt muss ich nur noch mit der Abwärtspfeiltaste den ganzen Absatz markieren.
Das wollten wir also, oder? Drücken Sie jetzt einfach 'd' und der ausgewählte Absatz wird ausgeschnitten/gelöscht. Abgesehen von Ausschneiden/Löschen können Sie natürlich jede andere Option für den ausgewählten Text ausführen.
Dies bringt uns zu einem weiteren wichtigen Aspekt:nicht jedes Mal müssen wir die komplette Zeile oder Zeilen löschen; was ist in solchen fällen zu tun? Das bedeutet, dass die gerade besprochene Lösung nur funktioniert, wenn Sie den Betrieb auf kompletten Linien durchführen möchten. Was ist, wenn die Anforderung darin besteht, die ersten drei Sätze in einem Absatz zu löschen?
Nun, dafür gibt es auch einen Befehl - verwenden Sie einfach 'v' anstelle von 'V' (natürlich ohne einfache Anführungszeichen). Im Folgenden sehen Sie ein Beispiel, in dem ich 'v' verwendet und dann die ersten drei Sätze im Absatz ausgewählt habe:
Fahren Sie fort, manchmal bestehen die Daten, mit denen Sie es zu tun haben, aus separaten Spalten, und die Anforderung kann darin bestehen, eine bestimmte Spalte auszuwählen. Betrachten Sie beispielsweise den folgenden Screenshot:
Angenommen, die Anforderung besteht darin, nur den Namen der Länder auszuwählen, was die zweite Spalte des Textes bedeutet. Was Sie in diesem Fall also tun können, ist, den Cursor unter das erste Element der betreffenden Spalte zu bringen und einmal Strg+v zu drücken. Wählen Sie nun mit der Abwärtspfeiltaste den ersten Buchstaben jedes Ländernamens aus:
Wählen Sie dann mit der rechten Pfeiltaste die komplette Spalte oder die ganzen Namen aus.
Tipp :Falls Sie aus irgendeinem Grund die Auswahl eines Textblocks aufgehoben haben und ihn jetzt erneut auswählen möchten, drücken Sie im Befehlsmodus einfach "gv".
Manchmal möchten Sie beim Arbeiten an einer großen Datei (z. B. einer Quellcodedatei oder einem Shell-Skript) zu einer bestimmten Stelle wechseln und dann zu der Zeile zurückkehren, an der Sie ursprünglich waren. Das ist kein Problem, wenn die betreffenden Leitungen nicht weit entfernt sind oder Sie dies gelegentlich tun müssen.
Aber was ist umgekehrt - Sie müssen häufig zwischen Ihrem aktuellen Standort und verschiedenen weit entfernten Zeilen in der Datei springen. Nun, die Lösung in diesem Fall ist die Verwendung von Markierungen. Markieren Sie einfach Ihren aktuellen Standort und kehren Sie dann von einer beliebigen Stelle in der Datei zu diesem Standort zurück, indem Sie einfach den Namen der Markierung erwähnen.
Um eine Zeile in vim zu markieren, verwenden Sie das m Befehl gefolgt von einem Buchstaben, der den Namen der Marke darstellt (verfügbare Optionen sind a-z in Kleinbuchstaben). Beispiel:mama . Um nun auf das Zeichen a zurückzukommen , verwenden Sie das 'a Befehl (einfaches Anführungszeichen eingeschlossen).
Tipp :Sie können Apostrophe verwenden ('
) oder Backtick (`) depending on whether you want to jump to the beginning of the marked line, or specifically to
springen möchten die Zeile und Spalte der Marke.
Es kann verschiedene andere nützliche Anwendungen von Vim-Markern geben. Beispielsweise können Sie eine Zeile markieren, dann zu einer anderen Zeile wechseln und den folgenden Befehl ausführen:
d'[mark-name]
um alles zwischen Ihrer aktuellen Position und der markierten Zeile zu löschen.
Weiter geht es mit einem wichtigen Tid-Gebot aus der offiziellen Vim-Dokumentation:
Each file has a set of marks identified by lowercase letters (a-z). In addition there is a global set of marks identified by uppercase letters (A-Z) that identify a position within a particular file. For example, you may be editing ten files. Each file could have mark a, but only one file can have mark A.
Während wir also die grundlegende Verwendung von Kleinbuchstaben als Vim-Zeichen besprochen haben, wie und wo die Großbuchstaben nützlich sind. Nun, der folgende Auszug macht es deutlich:
Because of their limitations, uppercase marks may at first glance seem less versatile than their lowercase counterpart, but this feature allows them to be used as a quick sort of "file bookmark." For example, open your .vimrc, press mV, and close Vim. The next time you want to edit your .vimrc, just press 'V to open it.
Und schließlich, um eine Markierung zu löschen, verwenden Sie den Befehl 'delmarks'. Zum Beispiel:
:delmarks a
Der oben genannte Befehl löscht die Markierung a aus der Datei. Wenn Sie eine Zeile löschen, die eine Markierung enthält, wird diese Markierung natürlich auch automatisch gelöscht. Weitere Informationen zu Markierungen finden Sie in der Vim-Dokumentation.
Wenn Sie anfangen, Vim als Ihren primären Editor zu verwenden, werden Funktionen wie die in diesem Tutorial erklärten zu nützlichen Werkzeugen, die Ihnen viel Zeit sparen. Wie Sie zustimmen werden, gibt es keine große Lernkurve, die mit den hier erklärten Auswahl- und Markierungsfunktionen verbunden ist - alles, was erforderlich ist, ist ein wenig Übung.
Für die vollständige Abdeckung von Vim-bezogenen Artikeln auf HowtoForge, gehen Sie hier.