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

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

12 голосов
/ 05 ноября 2010

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

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

:%s/test/testValue/gc

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

%s/someLongAndDirtyString/somelongAndDirtystring/gc

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

%s/someLongAndDirtyString/someLongAndDirtyString/gc

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

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

Спасибо

Ответы [ 2 ]

23 голосов
/ 05 ноября 2010

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

Метод 1

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

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

Метод 2

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

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

Do :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 затем / вставляет содержимое вашего поискового регистра.

13 голосов
/ 05 ноября 2010

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

:%s//newstring/gc

и vim вставит последнюю искомую строку между слешами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...