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?
possível duplicata de Como posso usar um número de linha para copiar uma linha para onde meu cursor está?
— Jecxjo # 12/15
De :help :yank:
Então, para puxar a linha 4, digite-se:
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:
Obviamente, você também pode usar outros intervalos. Alguns exemplos:
Linhas 1 a 3: :1,3yank
O buffer inteiro: :%yank
Da linha atual até o final do buffer: :.,$:yank
A linha atual e os próximos 3: :.,+3yank
A linha atual e as 3 anteriores: :-3,.yank
A linha 3 linhas acima da linha atual: :-3yank
As coisas mais úteis a serem lembradas sobre os intervalos:
Está na forma de :line1,line2command.
A .é a linha atual (na verdade você pode omitir o ponto na maioria dos casos; :.,+3yanke :,+3yanké o mesmo)
Você especifica linhas relativas à posição atual com +ne -n.
Veja :help [range]para mais informações.
Pontos de bônus por mencionar <Co>, estou subutilizando isso.
Também vale a pena mencionar que você pode abreviar :4yankcom:4y
— NewbieOnRails
Além da resposta de Carpetsmoker, devo destacar o incrível :help :me :help :t.
Se você deseja copiar a linha 4 para a direita abaixo da linha atual, faça isso:
ou isso, se você deseja copiar essa linha logo acima da linha atual:
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).
Usar `` provavelmente é uma recomendação melhor do que '', pois o primeiro retorna à mesma linha e coluna. O mesmo vale para `m vs. 'm.
Concordo. (Alguma idéia de como criar backtics literais na marcação wiki, pois eles têm um significado especial?) - Caso contrário, seu comentário servirá como uma emenda à minha resposta e como uma dica para os leitores.
É necessário usar vários backticks para delimitar o código embutido (cf, daringfireball.net/projects/markdown/syntax#code ). Eu sei que funciona em perguntas / respostas, mas não consegui fazê-lo funcionar no meu comentário.
puxar a linha 4
ele entrará no registro sem nome. Então, (por exemplo), você pode usar ppara 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
A parte de colocá-lo em um registro nomeado com "ay4 não parece correta. Se você fizer isso, o vim estará esperando que você diga" 4 o quê? ". Por exemplo, se você pressionar Enter, ele arrancará 4 linhas a partir de a posição atual, se você digitar / foo <Enter> vai arrancar até o quarto seguinte occurrance de "foo", etc.