it-swarm.com.de

Wie kann ich mehrere Zeilen in ein Register ziehen?

Ich möchte in vim mehrere Zeilen in ein einziges Register ziehen, um auf einfache Weise verschiedene Textvorlagen in ein Dokument einzufügen.

Beispiel: "iyy zieht nur die aktuelle Zeile an, wenn ich versuche, im visuellen Modus mehrere Zeilen auszuwählen, wird sie nicht in das Register geschrieben.

Irgendwelche Vorschläge?

40
ryz

Verwenden Sie 3Y, um 3 Zeilen in das Standardregister zu ziehen. "i3Y zum ruckeln ins register i.

Außerdem zähle ich am liebsten nicht die Zeilen, die ich ziehen möchte, sondern wähle sie im visuellen Modus über V und Bewegungsbefehle aus und drücke dann y, um sie zu ziehen, oder "_y, um sie in ein Register zu ziehen.

Ich habe auch gerade versucht, mehrere Zeilen im visuellen Zeilenmodus auszuwählen und in ein nicht standardmäßiges Register zu ziehen, z. Vjjj"oy - und es funktioniert.

57
ulidtko

Überall in der Datei können Sie Folgendes verwenden.

:2,5y a

Yank-Linien 2 - 5. IN REGISTER a

:7pu a

Einfügen, Register a unter Zeile 7.

23
alock27

Verwenden Sie m, um den Start mit einem Puffernamen zu markieren (Sie können also mx eingeben). Bewegen Sie den Cursor nach unten zu der Stelle, an der Sie den Kopiervorgang beenden möchten, und geben Sie y'x ein (oder d'x, wenn Sie ausschneiden und einfügen). Bewegen Sie dann den Cursor an die Stelle, an der Sie einfügen möchten, und geben Sie p ein.

Der Vim-Befehl Spickzettel

9
Nifle

Sie stellen dem Befehl eine Zahl voran, um die Anzahl der zu bearbeitenden Zeilen zu ermitteln. Sie könnten auch ein 'Text-Objekt' (wie ']' für Block und ')' für Absatz) verwenden - dies würde kontextabhängig für mehrere Zeilen funktionieren - die Standardeinstellung ist häufig eine einzelne Zeile. Zum Beispiel würde "r5yy fünf Zeilen ab dem Cursor in das 'r'-Register ziehen. (Oder Sie können :.,+4y r eingeben, um im Ex-Modus dasselbe zu tun.) Sie können Zahlen auch mit Textobjekten kombinieren. "r10y).

6
Arcege

Es ist möglich, mehrere Zeilen zu ziehen, wenn es sich um eine letzte Suche handelt.

Beispiel: Geben Sie folgendes ein nicht gieriges mehrzeiliges Muster an:

/start\_.\{-}end/norm gn"iy

dann haben Sie Ihr gezerrtes mehrzeiliges Muster (zwischen start und end) in Ihrem @i-Register (Drucken nach echo @i).

Siehe auch: Wie drucke ich eine mehrzeilige Übereinstimmung? bei Vi

1
kenorb