Wie kann ich eine Zeilennummer verwenden, um eine Zeile dahin zu kopieren, wo sich mein Cursor befindet?

20

Oft bin ich in einer ähnlichen Situation:

1. <Line 1>
2. <Line 2>
3. <Line 3>
4. <Cursor is here>
5. <I want to copy line 1 here>

Eine einfache Lösung ist mm:1<CR>yy`mp: Markieren Sie Zeile 4, gehen Sie zu Zeile 1, kopieren Sie sie, kehren Sie zur Markierung zurück und fügen Sie sie ein.

Gibt es eine kürzere / flüssigere Lösung dafür? Das mache ich so oft, dass ich gerne ein Mapping dafür mache.

Daniel Kleinstein
quelle

Antworten:

23

Sieht aus wie ein Fall für eine Ex-Kopie ( :help :cooder :help :t):

:1t4

Oder verwenden Sie die Position Ihres Cursors:

:1t.

Dadurch wird die Zeile nicht in das Register "yank" kopiert, das möglicherweise Ihren Wünschen entspricht.

PhilippFrank
quelle
Ich benutze nicht genug Ex-Kopie, guter Vorschlag.
Jecxjo
10

Sie können es verkürzen, indem Sie keine Markierungen verwenden und die Linie direkt ziehen.

:1y<CR>p

Die Befehlsversion von yank benötigt a {range}, um eine Zeile oder eine Gruppe von Zeilen auszuwählen.

Außerdem kann der Bereichswert entweder absolut oder relativ sein. Zeilen oberhalb des Cursors stehen für einen negativen Abstand und Zeilen unterhalb für einen positiven Abstand. Wenn Sie also zwei Zeilen nach oben ziehen, ist dies :-2yund wenn Sie zwei Zeilen nach unten ziehen, ist dies :+2y.

jecxjo
quelle