Я знаю, что это старый вопрос, и способ @mykola-golubyev, очевидно, является лучшим ответом для конкретного случая в вопросе OP (который, я полагаю, проходит через запутанный код, где у вас, вероятно, будет несколько блоков с одинаковыми именами var) ; но с таким названием вопроса многие люди, приходящие сюда из поисков Google, вероятно, ищут менее зависящие от ситуации способы переименования переменных в VIM - и они могут быть более краткими
Я удивлен, что никто не предложил такой способ:
* :s// НОВОЕ ИМЯ /gc
То *же, что иgn - он ищет следующее вхождение слова под курсором и становится последним искомым шаблоном, поэтому, когда вы опускаете шаблон поиска в команде замены, VIM предполагает, что это шаблон для поиска.
Для небольшого количества копий var еще более быстрый:
* cw NEWNAME, <esc> затем повторите n.для других случаев
Поиск вхождения, cwэто команда для изменения слова , nпереходит к следующему вхождению последнего искомого термина и .повторяет последнюю команду (которая представляет собой изменение слова на NEWNAME )
(Благодарности за то, что я все это знаю, идут на @doomedbunnies на Reddit )
Еще один крутой трюк: ( кредиты на @ nobe4 )
* cgn NEWNAME, <esc> затем повторите .для других случаев
cgnэто «изменить то, что является результатом (найти следующее вхождение)». Теперь, когда это последняя команда , вам не нужно nпереходить к следующему вхождению, поэтому снова меньше штрихов и, что более важно, нет необходимости чередовать nи. . Но, очевидно, у этого есть недостаток, заключающийся в том, что у него нет возможности пропустить событие.
Вот некоторые преимущества:
- нет сопоставления, нет .vimrc (или init.vim), поэтому вы можете использовать его в любой копии VIM, с которой столкнетесь (например, быстрая задача на каком-то VPS или машине вашего друга, где настройка VIM по-своему нарушит цель `` быстрого '' )
- использование
*или gnдля выбора слова выполняется очень быстро - всего одно нажатие клавиши (ну, скажем, 1,5)
- с помощью
*или gnубедитесь, что вы не найдете совпадений внутри других слов, как и :%s/<C-R>//gcделает. Лучше печатать :%s/\<OLDNAME\>/NEWNAME/gcот руки: лично я часто забываю использовать\< вещи, чтобы ограничить совпадение только целыми словами.
- Неиспользование области видимости приведет только к нескольким дополнительным штрихам,
nчтобы пропустить нежелательные совпадения - возможно, даже меньше, чем дополнительные штрихи, необходимые для ограничения области действия. В обычных условиях ваши переменные, скорее всего, так или иначе локализованы для определенного блока кода.