Скажем, у меня есть слово, выбранное в визуальном режиме. Я хотел бы выполнить подстановку этого слова и всех других экземпляров этого слова в файле с помощью s//. Есть ли способ использовать выделенный текст в части s/<here>/stuff/
, не перепечатывая его?
В VIM можно использовать выделенный текст в заменяющей статье без повторного ввода?
Ответ 1
Конечно. Если вы выбрали слово, просто "y" ank его, а затем введите:
:%s/<ctrl-r>"/something else/g
Где нажата клавиша ctrl с ключом r и символ "просто".
Все нажатия клавиш:
y:%s/<ctrl-r>"/what to put/g<enter>
Ответ 2
Если вы искали свой текст, прежде чем использовать
CTRL-R/
чтобы вставить последний элемент поиска в ваш поиск и заменить строку.
Вы можете проверить эту страницу для других подобных трюков:
Ответ 3
Вам не нужно выдергивать слово, поместить курсор на слово, а затем:
:%s/<C-r><C-w>/bar/g
Ответ 4
Другой способ доступа к содержимому регистра из командной строки - через переменные @
. Поэтому, если вы вставляете текст в регистр по умолчанию, он будет в переменной с именем @"
.
:exe '%s/' . @" . '/stuff/'
Здесь отображение, чтобы сделать это легко набирать:
vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>
Теперь вы можете выделить что-то в визуальном режиме, введите \s
, введите свою замену и нажмите Enter
. depesz также делает хорошее сопоставление (почти так же, как он набрал его):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>