Como sobrescrevo linhas de texto no vi/vim?

Como sobrescrevo linhas de texto no vi/vim?

No vi/vim, gostaria de substituir as linhas de texto que descem na página. Semelhante a substituir caracteres em uma linha - pressiono Re colo e os caracteres são substituídos, mas em vez disso quero fazer o mesmo descendo a página.

Exemplo:

Eu tenho um arquivo com o seguinte texto:

 var1: 7FBzezsLKyzYmVeM
 var2: kL8RIBJVNrlEUyYV
 var3: 1FkmXFSXtH4msKnL

Gostaria de substituir essas linhas pelo seguinte:

 var1: 7PmuHKKRx9OYt9mR
 var2: nuRAS5dAKfUrvECJ
 var3: km11I7HuXOWuu43X

O que eu normalmente faria é excluir as linhas existentes e colar as novas linhas em seus lugares, ou vice-versa.

O novo texto vem do buffer de colagem, arrancado ou copiado de outro lugar.

Pesquisei bastante, mas não consigo encontrar nenhuma referência sobre como fazer isso. Mesmo com macros, não consigo pensar em como faria isso.

Alguém conseguiu fazer isso? Se isso não for possível, tudo bem, eu tenho certeza.

Responder1

Por favor, tente isto:

  • copie/arranque as linhas que deseja copiar
  • mude para o buffer que deseja alterar
  • gRCtrl-r0Esc

Tradução:

  • gRentra no modo de substituição visual (cf. :h gR)
  • Ctrl-r0- cola do registro 0(veja :h i_CTRL-R, :h quote0)
  • Esc- sai do modo de substituição.

Responder2

não tenho certeza do que você quer dizer.

vá para a primeira linha correspondente e use

.,.+2d
r /tmp/var
  • .,.+2dirá deletar a linha 3 (ajuste 2 conforme sua necessidade)
  • r /tmp/varirá ler (inserir) o arquivo de modelo.

Responder3

O embutido gR(conforme sugerido por @SatoKatsura) é ótimo se o comprimento do antigo e do novo for idêntico. No caso geral, isso não funciona e uma abordagem diferente deve ser adotada. Preciso disso com tanta frequência que escrevi um plugin para simplificar e permitir velocidade máxima:Substituir por registro.

Este plugin oferece um comando dois em um grque substitui o texto coberto por um {motion} / objeto de texto, linha(s) inteira(s) ou a seleção atual pelo conteúdo de um registro; o texto antigo é excluído do registro do buraco negro, ou seja, desaparece. Ele lida de forma transparente com muitos casos extremos e permite uma repetição rápida por meio do .comando padrão. Caso não goste, sua página traz links para alternativas.

informação relacionada