Автоматизация замещающих выражений в vim

#vim #command #substitution

#vim #команда #подстановка

Вопрос:

Какой хороший способ автоматизировать команды замены в vim?

Предположим, у меня есть что-то вроде:

 s/foo/bar/g
  

за исключением гораздо более сложного, и я хочу запустить его в выбранных диапазонах без
необходимости вводить команду замены?

Как я могу сохранить команду замены и дать ей короткое удобное имя, по которому я могу ее вызвать?

Комментарии:

1. Вы также можете изучить автоматические команды

Ответ №1:

Вы можете создать функцию с поддерживаемым диапазоном и в функции выполнить подстановку. Также создайте пользовательскую команду для вызова функции с диапазоном.

Однако, я думаю, самый простой способ — создать abbrev в вашем файле vimrc:

 cab RR s/foo/bar/g
  

таким образом, когда вы выбрали строки или в командной строке указали диапазоны (например 3,5 or % ... ), которые вы нажимаете RR<space> s/foo/bar/g , они будут заполнены автоматически. Вы можете выполнить некоторые настройки или просто нажать enter, чтобы отпустить его.

Ответ №2:

Вы можете попробовать сопоставить приведенное ниже нажатие клавиши пробела дважды на определенном слове автоматически заполнит команду замены словом под курсором и дождется ввода имени замены

 " super quick search and replace
nnoremap <Space><Space> :'{,'}s/<<C-r>=expand('<cword>')<CR>>/
nnoremap <Space>%       :%s/<<C-r>=expand('<cword>')<CR>>/
  

в вашем случае просто наведите курсор на слово foo и дважды нажмите пробел.
Вы должны увидеть

 :'{,'}s/<foo>/
  

Затем введите слово bar

 '{,'}s/<foo>/bar
  

все вхождения foo будут заменены на bar