Можно ли в VIM использовать выделенный текст в заменяющем предложении, не переписывая его?

StackOverflow https://stackoverflow.com/questions/1477652

  •  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 /

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

Вы можете проверить эту страницу на предмет других подобных трюков:

http://www.vim.org/htmldoc/insert.html

Вам не нужно тянуть слово, наведите на него курсор и затем:

:%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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top