Wie kann ich in Vim aus mehreren Zeilen kopieren? (kein Bereich);


20

Angenommen, ich habe

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

Wie kann ich Zeile 1 und 3 (nicht einen Bereich von Zeilen) kopieren und einfügen, zum Beispiel in Zeile 8? Wenn ich das mit |arg like ( 1y|3y) so mache, würde ich Zeilen in mehrere Register reißen, oder? Aber wie kann ich aus mehreren Registern gleichzeitig setzen?

Antworten:


33

Sie können an ein Register anhängen, anstatt es zu löschen, indem Sie den Großbuchstaben anstelle des Kleinbuchstaben verwenden.

Beispielsweise:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
Sie können dies auch im normalen Modus mit tun "ayyjj"Ayy"ap.
Wchargin

5
(oder 1G"ayy3G"Ayy8G"apfür explizite Zeilennummern)
wchargin

1
Ist es nicht nur Gzum Anstellen, nicht <C-G>?
David

1
Das ist so cool. Sie können so viele Dinge zum Puffern hinzufügen, Awie Sie möchten, und alles bleibt erhalten. Um noch einmal von a
vorne

1
@CornSmith Nitpick: buffer ist ein sehr spezifischer Begriff im Kontext von vim. "aist ein Register .
Türklinke

1

Sie können den :copyBefehl verwenden, der wie folgt abgekürzt werden kann :t:

:1t8
:3t8

Wenn Sie einen Bereich von Zeilen kopieren möchten (z. B. alle Zeilen von 1 bis 3), können Sie dies folgendermaßen tun:

:1,3t8

Ich möchte Zeilen nach Nummer kopieren, aber keine LINIENREIHE ... Kann ich mit etwas wie dem Befehl t eine Zeile anhängen?
Whats Myname

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

Diese können besser mit dem :tBefehl ausgedrückt werden , der auch die "oder 0-Register nicht löscht .
Türklinke
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.