Como posso usar um número de linha para copiar uma linha para onde está meu cursor?

20

Muitas vezes estou em uma situação semelhante a esta:

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

Uma solução fácil é mm:1<CR>yy`mp- faça uma marca na linha 4, vá para a linha 1, copie-a, volte para a marca e cole.

Existe uma solução mais curta / mais fluida para isso? Faço isso com frequência suficiente e fico feliz em fazer um mapeamento para isso.

Daniel Kleinstein
fonte

Respostas:

23

Parece um caso de cópia ex ( :help :coou :help :t):

:1t4

ou, usando a posição do seu cursor:

:1t.

Isso não copia a linha para o registro do arranco, que pode ou não ser o que você deseja.

PhilippFrank
fonte
Eu não uso ex cópia suficiente, boa sugestão.
Jecxjo
10

Você pode reduzi-lo não usando marcas e puxar a linha diretamente.

:1y<CR>p

A versão de comando do ianque leva um {range}modo, selecione uma linha ou um grupo de linhas.

Além disso, o valor do intervalo pode ser absoluto ou relativo. As linhas acima do cursor têm distância negativa e abaixo são positivas. Então, puxando duas linhas acima é :-2ye puxando duas linhas abaixo é :+2y.

jecxjo
fonte