Quando tenho que substituir uma palavra por outra que eu arranco antes, normalmente uso um fluxo de trabalho que me parece antinatural:
Digamos que eu tenho este texto:
foo bar buzz
E quero arrancar foo
e substituir bar
pelo que puxei antes.
Depois de puxar foo
, vejo as seguintes opções:
Opção 1
Coloque o cursor
bar
comw
Coloque
foo
na frentebar
comP
Coloque o cursor no
b
restantebar
e exclua a palavra comde
opção 2
Coloque o cursor na barra com
w
Use
de
para apagarbar
Coloque o conteúdo do registro 0 com
"0P
(desde que eu apagueibar
,foo
não está mais acessível com um simplesp
)
As duas maneiras me parecem complicadas demais e tenho certeza de que existe uma maneira mais eficiente de realizar essa ação, mas não consigo descobrir como. Essa idéia seria combinar as ações excluir e colocar em apenas uma, ou pelo menos evitar manter a palavra excluída no registro do arranco, para que eu possa colocar a palavra desejada com um simples p
.
Também sei que o modo de substituição foi acionado, R
mas ele não permite colocar o que foi arrancado.
TL; DR : Como substituir uma palavra pelo conteúdo do registro yank?
fonte
Eu encontrei outra maneira de fazer isso, é um pouco semelhante à opção 2, mas tem a vantagem de não mexer no estado dos registros.
A idéia é usar o " registro do buraco negro ": esse registro é acessível via
"_
e tem a particularidade de que você pode escrever nele, mas não ler, portanto, como um buraco negro, esse registro faz desaparecer totalmente qualquer coisa que entre nele. Aqui, podemos usá-lo para quefoo
permaneça no registro do arranco mesmo após abar
exclusão.Com esta solução, o worflow após o arranque
foo
seria:bar
comW
(ou qualquer palavra necessária, é claro)bar
com"_de
foo
partir do registro yank comP
. O registro do arranco ainda contémfoo
desde quebar
entrou no buraco negro.Não tenho certeza se essa é uma solução melhor do que a do @ Carpersmoker ( em termos de vitória do vimgolf @Carpetsmoker ), mas eu não sabia sobre o registro do buraco negro e achei que alguns poderiam estar interessados em conhecê-lo.
fonte
Vá para o início de "foo". Pressione
yiw
. Isso arranca a palavra interior.Vá para "bar" pressionando a letra
w
. Em seguida, selecione-o e puxe de volta:viw"0p
Eu uso
ciw
eyiw
muito.fonte
iw
é interessante, mas sua solução é a mesma do @ CarpetSmoker: selecionar visualmente a segunda palavra e colocar a primeira. Eu também acho que sua solução funcionaria com um simples emp
vez de usar o"0
registro.Quando o cursor estiver em qualquer lugar da palavra,
yiw
- arranque a palavra e guarde-a no0
registro.Vá para a palavra de destino a ser substituída
ciw
excluirá a palavra e o colocará no modo de inserção.ctrl-r
. Um"
pop-up pedindo o registo a ser invocado.0
irá colar a palavra arrancada.Palavras arrancadas são (normalmente!) Armazenadas no
0
registro. Veja:registers
para visualizar os buffers armazenados. Isso pode parecer um procedimento demorado, IMHO isso abre a porta para os truques de registro muito mais sofisticados.fonte