VIM: как заменить слово

Я думаю, проблема довольно распространена. Скажем, у нас есть исходный файл и мы хотим заменить некоторую строку другой строкой.

Обычно я использую следующую команду:

:%s/test/testValue/gc

Но что, если строка довольно длинная, и нам нужно просто прикоснуться к ней? Скучно набирать что-то вроде этого:

%s/someLongAndDirtyString/somelongAndDirtystring/gc

Можно ли поместить курсор на слово someLongAndDirtyString, нажать какую-нибудь магическую клавишу и получить следующую строку в последней строке?

%s/someLongAndDirtyString/somelongAndDirtystring/gc

Затем мы можем немного изменить новую строку и продолжить замену.

Конечно, это всего лишь идея. Пожалуйста, предоставьте мне лучший способ сделать такие замены.

Спасибо

Ответ 1

Возможно, вас заинтересует этот ответ. Я рассказал о том, как использовать регистры, но вот четыре метода для этого:

Метод 1

При редактировании команды нажмите CTRL R, затем CTRL W, чтобы вставить слово под курсором.

Также см. :help c_CTRL-R

Метод 2

Перейдите к своему слову, нажмите * и сделайте :%s//replacement/g. Если шаблон поиска не используется, используется последний шаблон поиска, взятый из регистра @/.

Метод 3 (вам, вероятно, понравится этот)

Сделайте a :nnoremap <f12> :%s/<c-r><c-w>/<c-r><c-w>/gc<c-f>$F/i (ctrl-f определяется опцией 'cedit')

Вы можете поместить это сопоставление в свой .vimrc.
Это отобразит ключ F12 в соответствии с тем, что вы хотите, и ваш курсор будет оставлен там, где вы хотите.

Метод 4

Перейдите к своему слову, нажмите * и сделайте :%s// CTRL R, / /gc
CTRL-R затем вставляет содержимое вашего регистра поиска.

Ответ 2

Хорошо, если ваш курсор находится над словом, которое вы хотите заменить, вы можете нажать *, который выделит и будет искать слово, а затем вы можете ввести:

:%s//newstring/gc

и vim будет вставлять последнюю искомую строку между косой чертой.