Wie arbeite ich mit dem Kommandozeilenmodus vi?

10

Gibt es eine Möglichkeit, mit dem Befehlszeilenmodus zu interagieren, während Sie immer in der Ausgangsposition bleiben?

Insbesondere sind die folgenden zwei Aktionen umständlich, da die Finger zu den Pfeiltasten und manchmal noch schlimmer zur Maus bewegt werden müssen.

  1. Bewegen: Gibt es eine Möglichkeit, sich im Befehlszeilenmodus hin und her zu bewegen, während Sie in der üblichen Position bleiben?
  2. Wie können Sie kopieren und in die Befehlszeile einfügen? Ich meine, beide von einem Teil der Befehlszeile selbst in einen anderen Teil oder aus dem Text oder sogar der Zwischenablage zu kopieren.
Shahbaz
quelle
1
Beides kann mithilfe des Befehlszeilenfensters mit gelöst werden :q. dies eröffnet einen neuen „Puffer-like“ Fenster, in dem Sie verwenden können , hjklfür Bewegung, yfür yanking usw.
Martin Tournoij
1
@ Carpetsmoker (du meinst q:, richtig?) Gut zu wissen! Ich war in der Vergangenheit versehentlich dort angekommen, habe aber nicht wirklich darüber nachgedacht, es zu benutzen. Es scheint jedoch nicht zu funktionieren /(Suche).
Shahbaz
Ups, ja, ich meinte q: ... Ich habe es nie viel benutzt, daher kann ich Ihnen keine vollständige / richtige Antwort geben ...
Martin Tournoij

Antworten:

17

Es gibt die Befehlszeile (die Sie kennen) und das Befehlszeilenfenster (die Befehlszeile in einem speziellen Puffer, den Sie wie jede andere bearbeiten können). Sie geben diese entweder über <C-f>von der Kommandozeile (auch für /Suchanfragen etc.) , wenn Sie das Bedürfnis verspüren , für mehr „Macht Bearbeitung“ oder direkt vom Normalbetrieb über den dedizierten q:, q/usw. Befehle.

Lesen Sie mehr dazu unter :help command-line-window.

Ingo Karkat
quelle
4
<C-f>ist sehr nützlich zu wissen, da es funktioniert, nachdem Sie bereits die Hälfte des Befehls abgeschlossen haben.
Shahbaz
1
Genau; Das :kommt für mich fast automatisch, daher ist es gut, wechseln zu können, ohne in den normalen Modus zurückzukehren.
Ingo Karkat
10

Neben der Bereitstellung des Befehlszeilenfensters bietet Vim auch einige eingeschränkte Funktionen, mit denen Sie im Befehlszeilenmodus ( ohne Verwendung der Pfeiltasten) mit der Befehlszeile interagieren können.

Bewegung

  • <ctrl-b> Bewegen Sie den Cursor an den Anfang der Befehlszeile
  • <ctrl-e> Bewegen Sie den Cursor an das Ende der Befehlszeile

Bearbeitung

  • <ctrl-h> Löschen Sie das Zeichen vor dem Cursor (wie die Rücktaste).
  • <ctrl-w> Löschen Sie das Wort vor dem Cursor
  • <ctrl-u> Löschen Sie den gesamten Weg vom Cursor zurück zum Anfang der Befehlszeile

Sie können natürlich Befehlszeilenzuordnungen hinzufügen :cnoremap, um die Navigationstasten bestimmter anderer Programme zu emulieren . Oder installieren Sie das RSI-Plugin von Tim Pope , um die De-facto-Standard-Readline-Bindungen zu verwenden.

Einfügen

Sie können den Inhalt eines Registers an der Position des Cursors in die Befehlszeile einfügen, indem Sie <ctrl-r>gefolgt von dem Zeichen, das das Register angibt, drücken . zB <ctrl-r>, +wird der Inhalt der Zwischenablage in die Befehlszeile einfügen; <ctrl-r>, "fügt den Inhalt des "unbenannten" Registers ein (dh den Inhalt Ihres letzten Löschens oder Ruckelns).

Siehe :help cmdline.txtfür weitere Details aller oben.

Reich
quelle
1
Genial! <ctrl-r>wäre besonders nützlich.
Shahbaz
Ja, ich habe sogar ^Rfür Makros verwendet. Es hat mir ermöglicht, super knifflige Manipulationen von Text durchzuführen, indem ich einen Teil der Datei während des Makros und später auch während des Makros mit dem gezogenen Teil in einem langen Ex-Modus-Befehl mit gezogen habe ^R. :)
Wildcard