Diga que estou na linha 20 e gostaria de puxar a linha 4, como posso fazer isso?
E da mesma forma, como posso puxar uma linha em relação à posição do cursor, digamos a de 3 linhas acima?
Diga que estou na linha 20 e gostaria de puxar a linha 4, como posso fazer isso?
E da mesma forma, como posso puxar uma linha em relação à posição do cursor, digamos a de 3 linhas acima?
Respostas:
De :help :yank
:
:[range]y[ank] [x] Yank `[range]` lines [into register x].
Então, para puxar a linha 4, digite-se:
:4yank
Observe que você pode fazer isso facilmente no modo de inserção com <C-o>
; isso permite que você execute um comando, após o qual você retorna ao modo de inserção; por exemplo:
<C-o>:4yank
Obviamente, você também pode usar outros intervalos. Alguns exemplos:
:1,3yank
:%yank
:.,$:yank
:.,+3yank
:-3,.yank
:-3yank
As coisas mais úteis a serem lembradas sobre os intervalos:
:line1,line2command
..
é a linha atual (na verdade você pode omitir o ponto na maioria dos casos; :.,+3yank
e :,+3yank
é o mesmo)+n
e -n
.Veja :help [range]
para mais informações.
:4yank
com:4y
Além dos comandos ex-mode que você possui, é possível alcançá-lo também no modo de comando, por exemplo: 4GY''
- o que significa: ir para a linha 4 ( 4G
), puxar a linha ( Y
) e retornar à linha anterior ( ''
).
Você também pode usar marcas de salto; para sua segunda pergunta, por exemplo: mm3kY'm
- o que significa: defina a marca m ( mm
), suba três linhas ( 3k
), puxe a linha ( Y
), retorne à marca m ( 'm
).
Basta digitar
:4y
puxar a linha 4
ele entrará no registro sem nome. Então, (por exemplo), você pode usar p
para colocá-lo em outro lugar. Você também pode usar [n]p
, por exemplo, 10p para colar 10 vezes.
Você pode colocá-lo em um registro nomeado como "a" com
:4y a
4G"ayy
.