Я бы хотел оптимизировать рабочий процесс поиска и замены в Vim. Это то, чем я занимаюсь часто, и я уверен, что большинство из вас тоже. Обычно что-то в этом роде - копирование блока и изменение имени переменной в нескольких местах. Я знаю, я знаю, что это, вероятно, вызывает ваш рефлекс «почему вы копируете и вставляете код», но давайте не будем идти по этому пути ... Есть много действительных вариантов использования :)
Я хорошо знаю команды поиска и замены: :s
или :%s
мне они не нравятся. Это заставляет меня печатать полное имя переменной, которую я ищу, и то, на что я ее изменяю. Может быть, есть лучший способ исправить количество набрав с :%s
? Я часто использую длинные описательные имена переменных, так что это действительно нарушает условия сделки. Мне также не нравится, как ввод имени переменной с нуля является склонным к опечаткам и может потребовать времени и умственных способностей для поиска опечаток. Я предпочитаю набирать его один раз, а затем копировать и вставлять, чтобы просто избежать этого, если это возможно.
Мой текущий рабочий процесс использует некоторую комбинацию движения / yank / select / search / put для перемещения по файлу и замены одного за другим. Это не очень хорошо, но имеет преимущество в том, что избегает ввода полных имен переменных. Возможно, мне просто нужно набрать первые несколько букв с помощью /
или использовать другую команду движения (например fx
), в зависимости от того, что вокруг, а затем нажать, ve
чтобы выбрать все слово. Я также не против, что я должен повторять для каждого случая. Я никогда не делаю полную замену без подтверждения каждого изменения. Но было бы намного предпочтительнее, если бы я мог повторить действие замены одним нажатием клавиши (что я не могу сделать с этим методом). каждая замена, как правило , что - то вроде n
то ve
тогда p
(или даже хуже "0p
)
Есть ли более быстрый способ?
n
ve
"0p
. К сожалению, это не может быть воспроизведено только с.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
повторяет последний «командный блок» (не уверен в точном термине. Например: Move + Action + Text. Например:cwtoto<Esc>
(переход от курсора к концу слова с помощью «toto»),c/foo<enter>bar<Esc>
(переход от курсора до непосредственно перед » foo ", и заменить на" bar "). Затем вы можете переместить (с помощью курсора, hjkl или числа + hjkl (делает это n раз), G (перейти в конец файла), / что-то (перейти непосредственно перед" что-то ") и т. д.), а затем нажмите,.
чтобы повторить тот же" командный блок "