Se você não se importa em pressionar uma combinação diferente cw
, acredito que você pode obter o que deseja facilmente, definindo um atalho. O que você pode fazer é colocar o seguinte
nmap <leader>a "1yiw:let @/=@1^Mciw
no seu .vimrc
arquivo. Observe que ^M
é uma captura da chave de retorno, e não os caracteres ^
e M
. Você obtém pressionando Ctrl+ Vno modo de inserção seguido de Enter. Agora, com isso definido, pressionar <leader>a
fará o mesmo que cw
, mas agora a palavra (anterior à alteração) estará em seu "último registro de pesquisa" (ou seja, o /
registro), portanto, pressionar ndepois de fazer a alteração e retornar ao modo normal, você será levado para a próxima ocorrência. Da mesma forma, pressionar pressionará Nvocê para a ocorrência anterior.
O atalho É claro que você pode escolher um atalho diferente <leader>a
, mas acho que esse é um atalho muito acessível. Pessoalmente, eu configurei <leader>
para ,
que eu só precise pressionar ,seguido de a, mas isso ocorre porque eu não uso um teclado americano, para que o meu \fique oculto um pouco (acredito que \seja o padrão <leader>
).
Explicação A ideia é realmente simples. Arranque a palavra sob o cursor para o registro de pesquisa /
e faça cw
. Assim nmap <leader>a "/yciw
era o que eu estava buscando, mas infelizmente eu não acho que você pode arrancar para o registo de pesquisa, de modo que a solução é arrancar a palavra sob o cursor para o 1
registo, em seguida, definir o /
registo igual a isso, e depois fazer cw
. O mesmo "1yiw
acontece com a parte que puxa a palavra interna sob o cursor para o registro 1
. Se você não conhece as palavras interiores, pode conferir :help iw
. Depois, :let @/=@1
segue uma captura de Entercoloca o conteúdo do 1
registro no arquivo /
. Neste ponto neNfunciona como a ocorrência seguinte e anterior da palavra sob o cursor e a ciw
é feito para que a palavra sob o cursor seja excluída e o Vim seja colocado no modo de inserção.
palavra versus palavra interna Acabei de perceber que assumi que você queria a palavra inteira sob o cursor, e não apenas do ponto do cursor em diante. É por isso que eu usei em iw
vez de em w
qualquer lugar. Se não for esse o caso, você deve usar
nmap <leader>a "1yw:let @/=@1^Mcw
em vez de. Se o cursor estiver na primeira letra da palavra, não há diferença.
aviso Esta solução provavelmente não vai funcionar bem se você tentar usá-lo em algo que contém diferentes coisas de letras, por exemplo, tendo o suporte cursor em um \
ou substituindo iw
por iW
, ib
, is
ou ip
ou algo (embora eu não sei por que você faria quer esse recurso com frases inteiras)
*
pesquisa. Especialmente,*
seleciona visualmente a palavra atual sem mover o cursor. Uma vez instalado, você pode*ciw
colocar a palavra antiga no registro de pesquisa e alterar a palavra. Então você pode usarn
e.
.