Como substituir o texto inside () pelo texto arrancado anteriormente?


9

Suponha que eu tenha o texto Fnordarrancado antes e que meu cursor esteja no Bda linha:

M:mock(Baz)

Como posso alterar o texto inside () com o texto arrancado anteriormente?

Atualmente, eu geralmente cometo o erro fazendo:

  • di( também conhecido como "delete inside ()"
  • SHIFT + P

no entanto, o que me deixa com o texto exato novamente, pois o texto excluído será movido para o registro.

Eu quero ter:

M:mock(Fnord)


11
@ Rich A pergunta fornecida cobre o caso mais geral de substituição de uma palavra arrancada. Penso que esta pergunta é um pouco mais específica e não atrai as mesmas respostas.
K0pernikus

Protip: O 0registro conterá o último texto arrancado. :h quote0
precisa saber é o seguinte

11
A mesma idéia da resposta aceita da pergunta mencionada pode ser aplicada aqui. Com o cursor entre parênteses, basta pressionar vi)p. É o mesmo que em que resposta, apenas com o i)objeto de texto em vez do wobjeto de texto,
EvergreenTree

11
@ k0pernikus Acho que teremos que concordar em discordar disso. Para mim, a parte importante de ambas as perguntas é a substituição, e não o objeto de texto usado para aplicá-lo.
Rich

Respostas:


13

Você pode usar a seleção visual para selecionar o texto a ser substituído e colar sobre ele da seguinte maneira:

vi(p

vi(seleciona Baz (porque está entre parênteses), pcola o Fnord sobre ele.

No entanto, isso puxará o Baz para o registro após a colagem, o que pode não ser o que você deseja.


10

A menos que você especifique um registro, p(ou P) usará o último registro que foi preenchido. O registro sem nome ""contém o texto arrancado ou excluído mais recentemente (a menos que outro registro tenha sido especificado, por exemplo, com "ay), mas eles também são "0usados ​​para arrancos ou "1exclusões / alterações. Veja registros .

Se o último texto foi arrancado, yvocê pode colá-lo do 0registro com "0P. Se foi excluído, você pode acessá-lo com o 2registro com "2P( "1é agora Baz).

Como alternativa, você pode evitar mexer com seus registros e excluir para o registro blackhole"_ :

"_di(P

3

Se a instalação de plug-ins for uma opção, você poderá usar o yankstack.vim . Em seguida, você pode manter seu fluxo de trabalho atual:

Atualmente, eu geralmente cometo o erro fazendo:

  • di (também conhecido como "delete inside ()"
  • SHIFT + P
  • Alt + p - alterna para o arranque anterior

1

Supondo que "Fnord" esteja no registro, você pode fazer (com o cursor no início da linha) f(ci(<c-r>a

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.