Como posso copiar / colar o padrão da linha atual no vim

1

Estou tentando, sem sucesso, copiar & colar padrão em todas as linhas usando um vim digamos que eu tenha um arquivo de texto com esta aparência:

Hello name is Mishal
Hello name is jon
Hello name is dod
Hello name is joli
Hello name is sara 

Eu quero copiar o último padrão ou qualquer outro padrão em cada linha e colocá-lo de volta no meio na mesma linha. para que pareça:

Hello Mishal name is Mishal
Hello jon name is jon
Hello dod name is dod
Hello joli name is joli
Hello sara name is sara

Eu sei que isso pode ser feito com outras ferramentas como awk, sed, cut, paste e mais mas eu preciso fazer isso com vim

    
por user3716621 21.04.2017 / 14:44

1 resposta

5

Você pode fazer isso com macro. No modo normal, digite q mais qualquer letra para iniciar a gravação de macro no registro a .

Em seguida, mova o cursor para o começo da linha e faça o seguinte comando:

3wyw^wPa

Explicação

  • Portanto, 3w move o cursor para 3 palavras
  • yw copia palavra no registro
  • ^w vai para o primeiro caractere não em branco e, em seguida, move uma palavra para frente (você precisa digitar ^ duas vezes para que funcione.
  • P colar palavra no registrador atual antes do cursor
  • a space adiciona um espaço depois da última palavra

Em seguida, digite q para parar a gravação da macro. Chegue ao início da linha e execute macro no registro "a" @a e / ou @@ para executar a última macro.

Tenho certeza de que há uma maneira mais elegante de fazer isso, mas esse funciona muito bem.

    
por 21.04.2017 / 15:12

Tags