Можно ли в VIM использовать выделенный текст в заменяющем предложении, не переписывая его?
-
16-09-2019 - |
Вопрос
Допустим, у меня есть слово, выделенное в визуальном режиме.Я хотел бы выполнить замену этого слова и всех других экземпляров этого слова в файле, используя s//.Есть ли способ использовать выделенный текст в s/<here>/stuff/
часть без необходимости перепечатывать ее?
Решение
Конечно.Если вы выбрали слово, просто отметьте его, а затем введите:
:%s/<ctrl-r>"/something else/g
Где нажать клавишу Ctrl с клавишей R, а «это просто» символ.
Все нажатия клавиш:
y:%s/<ctrl-r>"/what to put/g<enter>
Другие советы
Если вы искали текст, прежде чем использовать
CTRL-R /
чтобы вставить последний элемент поиска в ваш поиск и заменить строку.
Вы можете проверить эту страницу на предмет других подобных трюков:
Вам не нужно тянуть слово, наведите на него курсор и затем:
:%s/<C-r><C-w>/bar/g
Другой способ получить доступ к содержимому регистра из командной строки — через @
переменные.Итак, если вы скопируете текст в регистр по умолчанию, он будет в переменной с именем @"
.
:exe '%s/' . @" . '/stuff/'
Вот сопоставление, чтобы упростить ввод:
vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>
Теперь вы можете выделить что-то в визуальном режиме, набрав \s
, введите замену и нажмите Enter
. депешВерсия пользователя также дает хорошее сопоставление (почти точно так, как он ее напечатал):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>