Como copiar uma linha contendo uma string no buffer dentro do vim sem mover o cursor?

1

digamos que eu tenha um regex dentro de uma linha e eu queira copiar a primeira linha acima da posição do cursor que tenha esse padrão sem mover o cursor. Por exemplo (cursor sendo marcado com ||):

This is a short example.  
On the other hand,  
I'm having trouble with it. ||

Como copiar a frase "Este é um pequeno exemplo" para a posição do cursor (II)? Se eu procurar pela frase, o cursor será movido para This (? This is).

    
por tmaric 21.01.2013 / 12:58

2 respostas

3

Você poderia fazer:

:?short?t.

Ele faz uma pesquisa para trás por short ( ?short ) e copia a linha correspondente ( t ) para depois da linha atual ( . ).

Você pode ler sobre comandos Ex em :h :index e sobre intervalos em :h range .

editar

Na realidade, não funciona exatamente assim, mas acho que a explicação acima pode fazer um pouco mais de sentido.

O mecanismo exato é explicado sucintamente em :h :copy :

:[range]co[py] {address}
    Copy the lines given by [range] to below the line given by {address}.

Aqui, a [range] é a primeira linha acima da atual que corresponde a short e a {address} é a linha atual, . .

Eu amo Vim.

    
por 21.01.2013 / 14:31
1

Existem algumas maneiras e plugins que vêm à minha mente, mas o caminho natural seria apenas pesquisar ( ?This is ), puxar e pular de volta para a posição original com Ctrl + O e cole. Com a ajuda da lista de saltos (cp. :help jumplist ), o movimento temporário não é tão ruim.

    
por 21.01.2013 / 13:31

Tags