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)
k0pernikus
fonte
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.

Alex
fonte
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
Steve
fonte
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
mMontu
fonte
1

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

Christian Brabandt
fonte