Jak mogę użyć numeru linii, aby skopiować linię do miejsca, w którym znajduje się mój kursor?

20

Wiele razy jestem w podobnej sytuacji:

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

Prostym rozwiązaniem jest mm:1<CR>yy`mp- oznacz znak w linii 4, przejdź do linii 1, skopiuj go, wróć do znaku i wklej.

Czy istnieje krótsze / bardziej płynne rozwiązanie tego problemu? Robię to wystarczająco często, że cieszę się, że mogę to zrobić.

Daniel Kleinstein
źródło

Odpowiedzi:

23

Wygląda jak skrzynka dla kopii ex ( :help :colub :help :t):

:1t4

lub używając pozycji kursora:

:1t.

Nie powoduje to skopiowania wiersza do rejestru Yank, który może, ale nie musi być tym, czego chcesz.

PhilippFrank
źródło
Nie używam wystarczająco kopii ex, dobra sugestia.
jecxjo
10

Możesz go skrócić, nie używając znaków i szarpać linię bezpośrednio.

:1y<CR>p

Wersja komendowa yank ma {range}więc wybierz linię lub grupę linii.

Ponadto wartość zakresu może być bezwzględna lub względna. Linie nad kursorem to odległość ujemna, a poniżej są dodatnie. Więc szarpanie dwóch linii powyżej jest :-2yi szarpanie dwóch linii poniżej jest :+2y.

jecxjo
źródło