Suponha que eu tenha o texto Fnord
arrancado antes e que meu cursor esteja no B
da 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)
cut-copy-paste
normal-mode
register
k0pernikus
fonte
fonte
0
registro conterá o último texto arrancado.:h quote0
vi)p
. É o mesmo que em que resposta, apenas com oi)
objeto de texto em vez dow
objeto de texto,Respostas:
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),p
cola 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.
fonte
A menos que você especifique um registro,
p
(ouP
) 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"0
usados para arrancos ou"1
exclusões / alterações. Veja registros .Se o último texto foi arrancado,
y
você pode colá-lo do0
registro com"0P
. Se foi excluído, você pode acessá-lo com o2
registro com"2P
("1
é agoraBaz
).Como alternativa, você pode evitar mexer com seus registros e excluir para o registro blackhole
"_
:fonte
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:
fonte
Supondo que "Fnord" esteja no registro, você pode fazer (com o cursor no início da linha)
f(ci(<c-r>a
fonte