So ordnen Sie Schlüssel in Vim zu

So Ordnen Sie Schlussel In Vim Zu



In Vim ist die Tastenzuordnung ein Prozess, bei dem einer bestimmten Taste eine Reihe von Tasten oder Befehlen zugewiesen werden, um eine bestimmte Aufgabe auszuführen. Um beispielsweise alle Zeilen in der Datei auszuwählen, verwenden Sie die ggVG Befehl, und Sie müssen dazu vier Tasten drücken. Wie wäre es mit nur einem Tastendruck? Hier bietet sich die Vim-Tastenzuordnung an. Die Schlüsselzuordnung ist eine Möglichkeit, viele häufig ausgeführte Aufgaben in Vim zu automatisieren. Und Sie müssen davon gehört haben; Wenn Sie etwas mehr als zweimal tun, automatisieren Sie es!

In dieser umfassenden Anleitung erkläre ich, wie man die Schlüssel in Vim zuordnet, um die Vorgänge zu automatisieren. Von der Erstellung einer einfachen Tastenzuordnung bis zur erweiterten Tastenzuordnung, einschließlich der Prozesse, sie dauerhaft zu machen und zu entfernen.

Syntax

Um den Schlüssel in Vim abzubilden, wird die folgende Syntax verwendet:







map



In der obigen Syntax:



map nmap, imap, vmap, xmap, cmap oder omap
* , ,

*In der obigen Syntax ist der Abschnitt optional.

Vim-Spezialargumente

Vim-Spezialargumente sind Tags, die verwendet werden, um den Keymaps zusätzliche Funktionalität zu verleihen. Diese Argumente erscheinen nach dem Befehl :map und vor {rhs} und {lhs}.



Um beispielsweise eine Map pufferspezifisch zu machen, verwenden Sie das spezielle Argument wie folgt:

:Karte < Puffer > < C-a > ggVG
Um Echomeldungen von einer Keymap zu unterdrücken
Um die Zuordnung pufferspezifisch zu machen (einzigartig für den aktuellen Puffer)
Zeigt an, dass die Karte Teil eines Skripts oder Plugins ist
*Es wird verwendet, um die Sondertasten für die Zuordnung mithilfe der <>-Notation zu definieren (Funktionstasten, Steuerung, Umschalttaste und andere nicht alphabetische Tasten).
Es zeigt an, dass die linke Seite der Zuordnung ein Ausdruck ist und ausgewertet werden muss, um die rechte Seite zu erhalten
Um die Karte unter den lokalen und globalen Karten einzigartig zu machen
Um das Warten auf das nächste Befehlszeichen in der Karte zu überspringen

Die speziellen Tastennotationen von Vim werden im folgenden Bild erwähnt.

Wenn Sie beispielsweise die Leertaste bei der Tastenzuordnung verwenden möchten, wird die -Notation verwendet.

Erstellen einer einfachen Keymap in Vim

Lassen Sie uns die Vim-Tastenzuordnung anhand eines einfachen Beispiels verstehen. Ich möchte den Befehl „Alle Zeilen auswählen“ zuordnen ( ggVG ) Zu Strg+a Schlüssel. Um die Tasten Strg+A zuzuordnen, führe ich den folgenden Befehl in Vim aus.

:Karte < C-a > ggVG

Hier, bedeutet die Strg Und A Schlüssel, während ggVG ist ein Befehl zum Auswählen aller Zeilen in der Datei. Der :Karte Das Schlüsselwort ist standardmäßig für die Normalmoduszuordnung vorgesehen, jedoch ist das :nmap kann auch explizit dafür verwendet werden normal Modus.

In ähnlicher Weise können Sie die Funktion zum Umschalten der Zeilennummer mit dem zuordnen F1 Schlüsselverwendung:

:Karte < F1 > :Nummer setzen !

Wenn Sie nun die Taste F1 drücken, wird die Zeilennummer aktiviert und durch erneutes Drücken wird sie deaktiviert.

Beachten Sie, dass diese Methode nur die Schlüssel im aktuellen Puffer zuordnet und beim Schließen des Puffers entfernt wird.

Auflisten der Keymaps

Verwenden Sie den Befehl :map, um alle Tastenzuordnungen der Modi „Normal“, „Visual“ und „Operator Pending“ aufzulisten.

:Karte

Um die Schlüsselzuordnung von aufzulisten einfügen Und Befehlszeile Modi verwenden Sie die :map! Befehl.

:Karte !

Um die Tastenzuordnung eines bestimmten Modus aufzulisten, geben Sie einfach den Anfangsbuchstaben des Modus vor dem Schlüsselwort „map“ ein.

:nmap Zur Anzeige der Karten des Normalmodus
:imap Zur Anzeige der Karten des Einfügemodus
:vmap Zur Anzeige der Karten des visuellen und Auswahlmodus
:smap Zur Anzeige der Karten des Auswahlmodus
:xmap Zur Anzeige der Karten im visuellen Modus
:cmap Zur Anzeige der Karten des Befehlszeilenmodus
:omap Zur Anzeige der Karten des Operator-Pending-Modus

Um außerdem alle Karten einschließlich der Plugin-Karten mit Pfaden aufzulisten, verwenden Sie :ausführliche Karte Befehl.

:ausführliche Karte

Für einen bestimmten Schlüssel geben Sie einfach den Schlüssel im Befehl an ( :verbose Map ).

Keymaps dauerhaft machen

Die im obigen Abschnitt erwähnten Tastenzuordnungen ordnen nur die Tasten im aktuellen Puffer zu. Um Vim-Tastenzuordnungen dauerhaft zu machen, müssen die Zuordnungen in der vimrc-Datei platziert werden.

Beachten Sie, dass Sie beim Platzieren der Keymap im vimrc Fügen Sie vor der Datei keinen Doppelpunkt (:) ein Karte Befehl.

Nach dem Platzieren der Keymap im vimrc Speichern Sie die Datei, speichern Sie sie und beenden Sie sie mit dem Befehl :wq oder den Tastenkombinationen Umschalt+zz. Die in der platzierten Keymaps vimrc Die Datei ist global und kann in allen Vim-Sitzungen verwendet werden. Bestimmte Keymaps können jedoch vorübergehend deaktiviert werden, wenn sie die Arbeit in der aktuellen Sitzung beeinträchtigen. Weitere Informationen finden Sie weiter unten im Abschnitt „So entfernen Sie eine Keymap in Vim“.

Der vimrc ist die Einstellungsdatei von Vim, die verschiedene Befehle und Einstellungen enthält. Es ist in der vorhanden /usr/share/vim/ Verzeichnis auf macOS und /etc/vim unter Linux. Es ist wichtig zu beachten, dass die vimrc Dateien in den genannten Verzeichnissen sind systemspezifische Dateien. Sie können diese Dateien auch für die Tastenzuordnung bearbeiten, ich würde jedoch empfehlen, eine benutzerspezifische Datei zu erstellen vimrc Datei im Home-Verzeichnis.

Rekursion vermeiden

Bevor Sie fortfahren, ist es wichtig, sich mit der Rekursion bei der Vim-Tastenzuordnung vertraut zu machen. Seine Nachteile und wie man sie verhindert. Es kann anhand eines Beispiels nachvollzogen werden.

:Karte dd 3jdd

Im obigen Beispiel habe ich das zugeordnet dd Mit den Tasten bewegen Sie sich um 3 Zeilen nach unten und löschen die Zeile unter dem Cursor. Wenn ich jetzt drücke dd , wird versucht, die Karte auszuführen 3jdd . Vim wird das interpretieren dd Befehl als Karte und führen Sie die Karte wiederholt aus, wie in der folgenden Abbildung gezeigt.

Notiz : Rekursion kann den Vim-Editor einfrieren. Um die Sperrung aufzuheben, drücken Sie Strg+C Schlüssel.

Um eine Rekursion zu vermeiden, ersetzen Sie die Karte Schlüsselwort mit noremap , Wo ' noch ' bedeutet nicht rekursiv . Ich werde das ersetzen Karte Schlüsselwort mit noremap um die Rekursion in der obigen Keymap zu beheben.

:noremap dd 3jdd

Ich werde die Verwendung empfehlen noremap anstatt Karte um zu vermeiden, dass versehentlich eine rekursive Zuordnung erstellt wird.

Erstellen modusspezifischer Keymaps

Vim hat die Tastenbelegung so vielseitig gemacht, dass sogar eine Tastenbelegung eines bestimmten Modus ganz einfach erstellt werden kann. Wenn Sie beispielsweise eine Tastaturbelegung für den Einfügemodus mit einem erstellt haben F1 Schlüssel, dann können Sie dasselbe zuordnen F1 Geben Sie einen anderen Modus für einen völlig neuen Vorgang ein.

Im folgenden Beispiel habe ich das zugeordnet F1 Taste zum Löschen von 3 Zeilen im normal Modus und ziehen Sie 3 Zeilen in den einfügen Modus.

:nmap < F1 > 3dd
:imap < F1 > < C-t >

Die erste Karte löscht im Normalmodus drei Zeilen, wenn die Taste F1 gedrückt wird, während die zweite Karte im Einfügemodus mit derselben Taste einen Einzug in der aktuellen Zeile hinzufügt. Lassen Sie uns nun die Zuordnung in jedem Modus verstehen.

Normalmodus-Zuordnung

Um eine Karte im Normalmodus anzuwenden, verwenden Sie nur nmap Stichwort. Um beispielsweise alle Zeilen in einer Datei zu kopieren, verwenden Sie Strg+C Schlüssel verwende ich den folgenden Befehl.

:nmap < C-c > ggVGy

Wie bereits erwähnt, ist es eine bewährte Methode, eine nicht rekursive Methode zum Zuordnen eines Schlüssels zu verwenden. Daher werde ich die ersetzen nmap mit nnoremap Stichwort.

:nnoremap < C-c > ggVGy

Platzieren Sie es ohne Doppelpunkt (:) im vimrc Datei, um sie zu einer dauerhaften Tastaturbelegung zu machen.

ich werde benützen noremap anstatt der Karte im folgenden Beispiel.

Moduszuordnung einfügen

Um Tasten für den Einfügemodus zuzuordnen, verwenden Sie einfach ich anstatt N . Im Einfügemodus beispielsweise Strg+P Und Strg+N Tasten werden verwendet, um das Wort basierend auf der Rückwärts- bzw. Vorwärtsübereinstimmung automatisch zu vervollständigen. Um die zu kartieren Strg+P Um die Tasten mit der Tabulatortaste zu verwenden, verwende ich den folgenden Befehl.

:inoremap < Tab > < C-p >

Noch wichtiger ist, wenn Sie eine Karte erstellen möchten Modus „Operator anstehend“. Befehle in der Einfügemodus , dann müssen Sie das einfügen Drücken Sie die Taste auf der rechten Seite, um den Einfügemodus zu verlassen und diese Befehle auszuführen. In der folgenden Keymap möchte ich beispielsweise drei Zeilen mit löschen Strg+x Tasten und kehren Sie in den Einfügemodus zurück.

:inoremap < C-x > 3ddi

Wenn ich jetzt drücke Strg+x Tasten drücken, wird das gedruckt 3ddi Befehl ausführen, anstatt ihn auszuführen.

Um das Problem zu beheben, werde ich das einfügen Vor dem 3ddi Befehl.

:inoremap < C-x > < Esc > 3ddi

Jetzt führt der Befehl aus, dass ich im Einfügemodus bleibe.

Vielen Mini-Laptops fehlt das Esc Taste, die wichtig ist, um den aktuellen Modus zu verlassen. Also, um das abzubilden Esc Um den Einfügemodus zu verlassen, kann die Tastenzuordnung verwendet werden. Im folgenden Beispiel verwende ich ex Mit den Tasten gelangen Sie in den Normalmodus zurück.

:inoremap ex < Esc >

Wenn Sie schnell drücken ex Mit den Tasten wird der Einfügemodus verlassen und in den Normalmodus zurückgekehrt.

Visuelle Moduszuordnung

Der visuelle Modus ist ein sehr wichtiger Modus zum Auswählen von Text im Vim-Editor. Neben der Grundauswahl verfügt der visuelle Modus über weitere verschiedene Modi, z. B. den visuellen Linien- und den visuellen Blockmodus.

Im visuellen Modus Tilde (~) wird verwendet, um den Fall umzuschalten. Um Tilde (~) zu verwenden, müssen Sie die beiden Tasten drücken (Umschalt+~) . Im folgenden Beispiel ordne ich die c-Taste zu Visueller Modus um ein Wort unter dem Cursor auszuwählen und seine Groß-/Kleinschreibung zu ändern.

:vnoremap c iw~

Drücken Sie nun v, um in den visuellen Modus zu gelangen, und drücken Sie die Taste c, um das Wort unter dem Cursor umzuschalten, wie im folgenden GIF gezeigt.

Zuordnung des Befehlszeilenmodus

Viele wichtige Vim-Befehle funktionieren nur im Befehlszeilenmodus. Zum Beispiel, um die Datei zu speichern :In Der Befehl wird in ähnlicher Weise zum Speichern und Beenden verwendet :wq Befehl verwendet wird. Alle Tabulator- und Teilungsvorgänge werden auch im Befehlszeilenmodus ausgeführt. Um beispielsweise eine neue Registerkarte zu erstellen, muss die : untergeordnet Befehl verwendet wird. Nun, um schnell eine Registerkarte zu erstellen, Strg+T Schlüssel reichen aus.

:cnoremap < C-t > Thema < CR >

Drücken Sie nun den Doppelpunkt (:), um in den Befehlszeilenmodus zu gelangen, und dann Strg+T um einen neuen Tab zu öffnen; Es geht viel schneller, als das Ganze einzutippen Thema Befehl und Zurückkehren Schlüssel.

Erstellen benutzerdefinierter Vim-Befehle
Das Aufrufen des Befehlsmodus zum Ausführen einer Karte scheint weniger nützlich zu sein. Sie können jedoch in Vim Ihre eigenen benutzerdefinierten Befehle erstellen :Befehl Möglichkeit. Diese Funktion ähnelt stark der Vim-Tastenzuordnung. Um beispielsweise einen Schnellbefehl zum Festlegen der Zeilennummer und Textbreite auf 80 zu erstellen, verwenden Sie den folgenden Befehl.

:Befehl Mycmd :Nummer festlegen Textbreite = 80

Rufen Sie nun den Befehlsmodus auf und führen Sie Folgendes aus :Mycmd Befehl.

Zuweisung des vom Operator ausstehenden Modus

Der Operator-Pending-Modus ist ein Modus, in dem Vim auf den Bewegungsbefehl wartet, nachdem die Operator-Taste gedrückt wurde. Die üblichen Operatoren sind y, d und c. Um beispielsweise die aktuelle Zeile und die drei folgenden Zeilen zu löschen, verwenden Sie den d-Operator mit 3j Bewegung (d3j). Sie können diese Tasten nicht gleichzeitig drücken, um den gewünschten Vorgang auszuführen.

Der Modus wird im Allgemeinen zur Abbildung der Bewegungen verwendet. Lassen Sie uns eine Bewegung zuordnen, die die aktuelle Zeile und drei darauf folgende Zeilen auswählt.

:onoremap < F2 > 3j

Um nun die aktuelle Zeile und die drei darauf folgenden Zeilen zu verschieben, verwenden Sie die theF2 Schlüssel, auf die gleiche Weise, die D Operator kann ebenfalls angewendet werden.

Eine weitere wichtige Sache, die Sie im Hinterkopf behalten sollten, ist beispielsweise, wenn Sie der oben genannten zugeordneten Bewegung eine Zählung hinzufügen 2 , die Karte nimmt es als 23j an, nicht als 6j. Um dies zu beheben, kann der Ausdruck register „=“ verwendet werden. Die obige Karte kann wie folgt geändert werden @=’3j’ .

:onoremap < F2 > @ =’3j’ < CR >

So ordnen Sie Mausereignisse zu

Obwohl Vim ein vollständig anpassbarer, tastaturbasierter Texteditor ist, wird er durch die Verfügbarkeit der Mausfunktion noch besser. Neben normalen Tastaturtasten können in Vim auch alle Mausereignisse abgebildet werden. Wenn Sie beispielsweise den rechten Doppelklick und den linken Doppelklick zuordnen möchten, um die Markierungen vorwärts bzw. rückwärts zu springen, verwenden Sie die folgende Zuordnung.

:noremap < 2 -Rechte Maus > ] `
:noremap < 2 -Linke Maus > [ `

Weitere Mausereignisse, die zugeordnet werden können, sind in der folgenden Tabelle aufgeführt.

<2-LeftMouse>
<2-RightMouse>
<3-LeftMouse>
<3-RightMouse>
<4-LeftMouse>
<4-RightMouse>

So erstellen Sie eine Zuordnung mit dem Leader-Schlüssel in Vim

Ohne den Leader-Schlüssel ist die Vim-Zuordnung unvollständig. Der Führungsschlüssel ist der Standardschlüssel, der zum Zuordnen von Schlüsseln verwendet werden kann, auch wenn diese für andere Aufgaben zugeordnet sind. Wenn Sie beispielsweise das zugeordnet haben D Um alle Zeilen zu löschen, können wir mit der Führungstaste dieselbe Taste zuordnen, um nur 5 Zeilen zu löschen.

Für diejenigen, die nicht damit vertraut sind, mit dem Vim-Leader-Schlüssel. Dabei handelt es sich um einen Schlüssel, dem ein anderer Schlüssel oder eine Reihe von Schlüsseln zur Zuordnung von Befehlen oder Vorgängen vorangestellt ist. Der Standard-Anleitungsschlüssel von Vim ist ein Backslash (\), er ist jedoch anpassbar.

Zum Beispiel die dd Mit dem Befehl wird die Zeile unter dem Cursor gelöscht. Wenn Sie das zuordnen möchten dd Befehl zum Löschen aller Zeilen in den Dateien, dann können Sie die Führungstaste verwenden.

:noremap < Führer > dd ggVGd

Jetzt, wann immer Sie drücken \dd Wenn Sie die Taste drücken, werden alle Zeilen in der Datei gelöscht. Sie können die Vim-Starttaste als Steuertaste unter Windows oder als Befehlstaste unter macOS verwenden.

So ordnen Sie eine Vimscript-Funktion zu

Der Vim-Editor ist nicht auf die Befehle oder Operationen beschränkt. Um Vim herum gibt es eine komplette Programmiersprache namens Vimscript, mit der benutzerdefinierte Funktionen erstellt werden können. Sie können ganz einfach ein Skript oder eine Funktion erstellen und es einer Taste zuordnen. Erstellen wir beispielsweise eine Funktion, die Einstellungen wie Zeilennummer, Mausfunktionalität und Textbreite ermöglicht.

Funktion Meine Einstellungen ( )
Satz Nummer
Satz Maus =a
Satz Textbreite = 80
Endfunktion

Platzieren Sie diese Funktion in der vimrc-Datei.

Ordnen wir diese Funktion den Leader- und S-Tasten zu. ich werde benützen

:noremap < Führer > s:rufen Sie MySettings auf ( ) < CR >

Jetzt, wann immer Sie drücken \S Wenn Sie die Tasten drücken, wird die Funktion aufgerufen und alle darin enthaltenen Funktionen werden ausgeführt.

Notiz : Der erste Buchstabe des Funktionsnamens sollte beim Erstellen einer benutzerdefinierten Funktion in Vim immer großgeschrieben werden.

So ordnen Sie externe Befehle in Vim zu

Die externen Befehle können auch in Vim abgebildet werden. Externe Befehle beziehen sich auf Linux- oder Unix-Befehle. Zum Beispiel, wenn Sie das Äußere abbilden möchten Sortieren Befehl zum Sortieren aller Zeilen im aktuellen Puffer nach F1 Schlüssel verwenden Sie den folgenden Befehl.

:noremap < F1 > : %! Sortieren < CR >

Wenn Sie eine Skriptdatei schreiben und sie ausführbar machen, ohne die Vim-Sitzung zu verlassen, können Sie auf die gleiche Weise Folgendes verwenden: chmod Befehl intern. Um beispielsweise die aktuelle Datei ausführbar zu machen, können Sie den Befehl ausführen :!chmod +x % in Vim. Wenn Sie diese Aufgabe häufig ausführen, ordnen Sie ihr einfach einen Schlüssel zu.

:noremap < F1 > : ! chmod +x %

In Vim kann jeder externe Befehl mit einem Ausrufezeichen (!) verwendet werden.

So entfernen Sie eine Keymap in Vim

Um Keymaps in Vim zu entfernen, identifizieren Sie zunächst, wo sie definiert sind. Wie bereits erwähnt, können Keymaps pufferlokal und permanent sein. Wenn die Tastenzuordnung dauerhaft ist und in der vimrc-Datei abgelegt wird, wird die Zuordnung der Tasten durch einfaches Entfernen aus der Datei aufgehoben.

Wenn die Zuordnung im aktuellen Puffer erfolgt, können sie mit entfernt werden :Karte aufheben oder :Karte aufheben! Befehle.

  • :Karte aufheben um Tastaturbelegungen der Modi „Normal“, „Visual“, „Select“ oder „Operator Pending“ zu löschen
  • :Karte aufheben! um Tastaturbelegungen des Einfüge- und Befehlszeilenmodus zu löschen

Zum Beispiel, um das zu entfernen Schlüssel, verwenden Sie die :unmap . Darüber hinaus kann das Entfernen der Schlüssel modusspezifisch erfolgen. Wenn Sie die Normalmodus-Karte entfernen möchten, verwenden Sie die :nunmap . Weitere modusspezifische Befehle zum Entfernen einer Tastaturbelegung sind unten aufgeführt:

:nunmap Um die Karten der zu entfernen normal Modus
:iunmap Um die Karten der zu entfernen einfügen Modus
:vunmap Um die Karten der zu entfernen visuell Und wählen Modus
:sunmap Um die Karten der zu entfernen wählen Modus
:xunmap Um die Karten der zu entfernen visuell Modus
:cunmap Um die Karten der zu entfernen Befehlszeile Modus
:ounmap Um die Karten der zu entfernen Betreiber steht noch aus Modus

Um alle Karten im aktuellen Puffer zu entfernen, verwenden Sie die :mapclear Befehl.

:mapclear

Der obige Befehl löscht alle Tastenbelegungen im Normal-, Visual-, Select- oder Operator-Pending-Modus.

Um alle Tastaturbelegungen im Einfüge- und Befehlszeilenmodus zu löschen, verwenden Sie:

:mapclear !

Beachten Sie, dass die standardmäßigen Vim-Befehle nicht klar sein können, diese jedoch mithilfe von deaktiviert werden können :Karte aufheben Befehl mit . Wenn Sie beispielsweise die dd-Funktion deaktivieren möchten, die die Zeile unter dem Cursor löscht, verwenden Sie :unmap dd .

:Karte aufheben dd < Nein >

Der dd ist im aktuellen Puffer nicht mehr funktionsfähig. Mit dieser Methode kann jede Tastaturbelegung für die aktuelle Sitzung deaktiviert werden.

Spickzettel zur Vim-Schlüsselzuordnung

Das folgende Bild enthält eine Liste aller Befehle und ihrer spezifischen Modi als Referenz.

Abschluss

Die Vim-Tastenzuordnung ist eine praktische Möglichkeit, Ihre Aufgaben, häufig verwendete Tastenkombinationen, Befehle und andere Vorgänge zu automatisieren. Es ist ein vielfältiges Thema und in diesem Leitfaden habe ich alle wichtigen Aspekte im Zusammenhang mit der Tastenzuordnung in Vim behandelt. Von der allgemeinen Syntax über die Erstellung einer einfachen Tastaturbelegung bis hin zur Zuordnung erweiterter Vimscript-Funktionen und externer Befehle. Um mehr über die Vim-Tastenzuordnung zu erfahren, verwenden Sie die :Hilfe zur Tastenbelegung Befehl in Vim.