Wie kann ich Text am Ende einer Zeilengruppe einfügen?

15

Angenommen, ich hatte einen Textblock ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... und ich wollte .am Ende jeder Zeile ein einfügen . Was wäre der beste Ansatz, um dies zu erreichen?

vim.ryan
quelle

Antworten:

11

Ich gehe folgendermaßen vor, um Text an mehrere Zeilen anzuhängen:

  • <c-V> - Aktivieren Sie den Visual Block-Modus.
  • Verwenden Sie j/ k, um die Zeilen auszuwählen.
  • $ - Bewegen Sie den Cursor zum letzten Zeichen.
  • A - Aktivieren Sie den Einfügemodus nach dem letzten Zeichen.
  • Fügen Sie den gewünschten Text ein.
  • <Esc> - Verlassen Sie den Einfügemodus und beenden Sie das Blockanhängen.

Im Vergleich zum Schreiben :normnach der Auswahl gibt es noch weniger Tastendrücke, aber der eigentliche Grund, warum ich dies benutze, ist, dass es für mich instinktiver ist, im Visual Block-Modus für diese Art von Änderungen zu arbeiten.

Vitor
quelle
Sehr nützlich in Kombination mit dem Einfügen einer Textspalte .
Paul Rougieux
8

In der ersten Zeile einfach Folgendes eingeben: 4:norm A.

4und :erstellen Sie einen Bereich für Sie und dann norm A.fügt den Punkt zu jeder Zeile

Eine andere Lösung für längere Absätze könnte sein: Vip<C-v>$A.<Esc>

Der erste Schritt ist die Auswahl des Absatzes, mit dem VipSie in den visuellen Blockmodus wechseln und den Cursor an das Ende jeder Zeile bewegen. $Dann fügen Sie den .zu jeder Zeile hinzu A.und <Esc>wechseln in den normalen Modus mit, um zu sehen, dass die Änderung auf jede Zeile angewendet wird .

rbernabe
quelle
Was ist dieser :ABefehl? Ich fand es nicht über:h :A
Peter Rincker
mein Fehler. In der Tat hat die Antwort nicht getestet. Ich aktualisiere es. Es sollte den normalen Befehl verwenden, genau wie @Kritixi Lhitos answer
rbernabe
Zwei Zeichen weniger als 4:norm A.es sein würde4:s/$/.
Philippos
3

Zuerst können Sie sie visuell mit auswählen Vund dann mit den Bewegungstasten den gesamten Text auswählen (oder wenn der Text ausschließlich ein Absatz wäre, den Sie [ab der ersten Zeile] ausführen könnten V}). Und dann tippe :. Dies sollte so etwas wie :'<,'>in der Kommandozeile aufrufen.

:'<'>normal A.

Dies wird normal A.in den ausgewählten Zeilen ausgeführt. normal A.Führt A.die Tastenanschläge im normalen Modus aus. Hiermit Awird .am Ende jeder ausgewählten Zeile ein angehalten .

Kritixi Lithos
quelle
3

Wenn Sie am Ende aller Zeilen einen Punkt einfügen möchten:

:%norm A.

oder Sie können suchen und ersetzen:

:%s/$/./

% ist die ganze Datei, $ ist das Ende der Zeile

folge
quelle
Da @ vim.ryan nach einem Textblock anstelle der gesamten Datei gefragt hat, wird :1,4s/$/./ das letzte Zeichen durch einen Punkt in den Zeilen eins bis einschließlich vier ersetzt.
14.
1

Um es etwas allgemeiner zu gestalten, können Sie ein Makro in einer einzelnen Zeile aufzeichnen und es dann in jeder Zeile in Ihrem visuell ausgewählten Bereich wiedergeben.

Zeichnen Sie ein Makro in ein Register auf (das q-Register in diesem Beispiel):

qqA.<Esc>q

Anschließend können Sie die Linien, auf denen Sie arbeiten möchten, visuell auswählen:

Vip

Spielen Sie dann Ihr Makro in jeder Zeile ab (der Bereich wird automatisch ausgefüllt):

:'<,'>norm @q
Zach Ingbretsen
quelle