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.

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.


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.

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.