Como lidar com a situação se a palavra contiver pontos ou barras (por exemplo, /usr/bin/bashou 1222.333)? Parece que o vim interpreta /e .no final da palavra e não seleciona a sequência inteira.
Alexander Cska
85
Muitas vezes me vejo querendo substituir uma palavra por outra que arranquei de outro lugar. O problema com as outras soluções é que se você tentar alterar uma palavra, então a sua próxima pasta vai ser essa palavra que foi eliminada com cw.
Tente o seguinte:
1 "This first word should overwrite the second"
yiw yank inner word (copy word under cursor, say "first").
... Move the cursor to another word (say "second").
viwp select "second", then replace it with "first".
Funciona bem, mas somente se for necessário fazer a substituição once. Se eu tiver que substituir alguns dos second' by primeiros` (no seu exemplo), a palavra copiada se tornará secondapós a primeira substituição.
ViFI
32
ciw
c change
iw inner word
Isso excluirá a palavra sob o cursor (mesmo se o cursor estiver em algum lugar no meio da palavra) e entrará no modo de inserção.
Consulte também a documentação do Vim para referência:
Se você deseja alterar uma palavra com uma palavra arrancada anteriormente, existe outra solução viwp(depois de ter arrancado a primeira palavra).
ciwremove a palavra anterior e coloca você no modo de inserção onde estava. Mas então você pode usar ctrl+r, 0para inserir o conteúdo do registro 0 (que contém a palavra arrancada anteriormente).
Assim:
yiw
[move to next word]
ciw
ctrl+r
0
Isso funciona melhor do que viwpporque, após o primeiro uso, você pode executar a substituição repetidamente .. Também não muda para o modo visual e destaca brevemente.
Não sei ao certo o que você quer dizer com isso não muda de modo, o oposto parece ser o caso, mas talvez seja isso que você queria, permanecer no modo de inserção. Mas uma grande vantagem é que isso (ao contrário de viwp) pode ser feito várias vezes com apenas um puxão. Obrigado!
Palo
Ah, você está certo, eu estava pensando em entrar no modo visual, editado. Eu não percebi que isso era uma limitação viwp- nem sequer .a duplica.
Connor
3
Essa é de longe a melhor solução quando já arrancamos a palavra de substituição.
Mljrg 04/07/19
1
Esta é a resposta! A capacidade de usar .com isso é ótima!
/usr/bin/bash
ou1222.333
)? Parece que o vim interpreta/
e.
no final da palavra e não seleciona a sequência inteira.Muitas vezes me vejo querendo substituir uma palavra por outra que arranquei de outro lugar. O problema com as outras soluções é que se você tentar alterar uma palavra, então a sua próxima pasta vai ser essa palavra que foi eliminada com
cw
.Tente o seguinte:
Espero que seja o que você estava procurando.
fonte
once
. Se eu tiver que substituir alguns dossecond' by
primeiros` (no seu exemplo), a palavra copiada se tornarásecond
após a primeira substituição.ciw
Isso excluirá a palavra sob o cursor (mesmo se o cursor estiver em algum lugar no meio da palavra) e entrará no modo de inserção.
Consulte também a documentação do Vim para referência:
fonte
Se você deseja alterar uma palavra com uma palavra arrancada anteriormente, existe outra solução
viwp
(depois de ter arrancado a primeira palavra).ciw
remove a palavra anterior e coloca você no modo de inserção onde estava. Mas então você pode usarctrl+r, 0
para inserir o conteúdo do registro 0 (que contém a palavra arrancada anteriormente).Assim:
Isso funciona melhor do que
viwp
porque, após o primeiro uso, você pode executar a substituição repetidamente.
. Também não muda para o modo visual e destaca brevemente.fonte
viwp
) pode ser feito várias vezes com apenas um puxão. Obrigado!viwp
- nem sequer.
a duplica..
com isso é ótima!Tente
cw
- como em 'alterar palavra'.Use http://linuxmoz.com/vi-commands-cheat-sheet/ ou qualquer outra folha de dicas como referência.
fonte