Eu sei que é uma pergunta antiga, e o método de @ mykola-golubyev obviamente É a melhor resposta para o caso específico da pergunta de OP (que, presumo, está passando por um código ofuscado, em que é provável que você tenha vários blocos com os mesmos nomes de var) ; mas com o nome da pergunta como aquele, muitas pessoas que vêm aqui das pesquisas do google provavelmente procuram maneiras menos específicas da situação para renomear variáveis no VIM - e essas podem ser mais concisas
Estou surpreso que ninguém sugeriu desta forma:
*
:s//
NOVO NOME /gc
O *
é o mesmo que gn
- ele procura a próxima ocorrência da palavra sob o cursor E se torna o último padrão pesquisado, portanto, quando você omite o padrão de pesquisa no comando substituto, o VIM assume que este é o padrão a ser pesquisado.
Para pequenas quantidades de cópias var, uma ainda mais rápida:
*
cw
NEWNAME <esc>
então repita n.
para outras ocorrências
Pesquisa por ocorrência, cw
é o comando para alterar palavra , n
vai para a próxima ocorrência do último termo pesquisado e .
repete o último comando (que é alterar palavra para NEWNAME )
(Os créditos por saber de tudo isso vão para @doomedbunnies no Reddit )
Outro truque legal é este: ( créditos para @ nobe4 )
*
cgn
NEWNAME <esc>
então repita .
para outras ocorrências
cgn
é "alterar o resultado de (localizar a próxima ocorrência)". Agora que este é o último comando , você não precisa n
ir para a próxima ocorrência, portanto, menos golpes novamente e, mais importante, não há necessidade de alternar n
e .
. Mas, obviamente, este tem a desvantagem de não ter uma maneira de pular uma ocorrência.
Aqui estão alguns benefícios:
- sem mapeamento, sem .vimrc (ou init.vim), então você pode usá-lo em qualquer cópia do VIM que encontrar (por exemplo, uma tarefa rápida em algum VPS ou na máquina de um amigo onde configurar o VIM do seu jeito iria contra o propósito de 'rápido' )
- usar
*
ou gn
para a seleção de palavras é muito rápido - apenas um toque de tecla (bem, digamos 1,5)
- usando
*
ou gn
garante que você não obtenha nenhuma correspondência dentro de outras palavras, assim como :%s/<C-R>//gc
faz. Melhor do que digitar à :%s/\<OLDNAME\>/NEWNAME/gc
mão: pessoalmente, tendo a esquecer de usar as \<
coisas para limitar as correspondências apenas a palavras inteiras.
- Não usar o escopo resultará apenas em alguns toques extras de
n
para pular combinações indesejadas - provavelmente ainda menos do que os toques extras necessários para limitar o escopo. Em circunstâncias normais, de qualquer maneira suas variáveis provavelmente estão localizadas em um determinado bloco de código.