Я знаю, что это старый вопрос, и способ @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
чтобы пропустить нежелательные совпадения - возможно, даже меньше, чем дополнительные штрихи, необходимые для ограничения области действия. В обычных условиях ваши переменные, скорее всего, так или иначе локализованы для определенного блока кода.