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 будет вставлять последнюю искомую строку между косой чертой.