Vim: поиск и замена Ag, глобально и внутри каталога

Я использую: Ag in vim для поиска шаблонов, но я не могу понять, как искать и заменять через ВСЕ файлы в моем проекте или в пределах того, что я указываю. Как это делается?

Ответ 1

В Vim поиск и замена по проекту в лучшем случае - это двухэтапный процесс, если вы не установите плагин, который абстрагирует эти два шага для вас, как EasyGrep.

В самой базовой форме поиск/замена по всему проекту выглядит следующим образом:

:args `grep -nl foo *.js`
:argdo %s/foo/bar/c

Это не поможет вам с :Ag, хотя, поскольку Vim не имеет встроенной команды, аналогичной семейству :*do, которая работает в списке quickfix.

У Дрю Нейла есть несколько скринкастов, здесь и there, которые касаются поиска/замены по всему проекту. Команда :Qfdo, указанная в нижней части второго сообщения, специально ориентирована на пользователей :vimgrep/:Ack/:Ag. С помощью этой команды и :Ag выполняется двухэтапный процесс:

:Ag foo
:Qfdo s/foo/bar/c

- EDIT -

Теперь у Vim есть :cdo, :cfdo, :ldo, :lfdo.

Ответ 2

В vim существует несколько решений, но для этого вам нужно открыть все файлы. Вы можете открывать файлы в разных окнах, буферах или вкладках, а для всех параметров у вас есть метод для работы со всеми файлами:

:windo :Ag

или

:bufdo :Ag

или

:tabdo :Ag

Подробнее см. :help windows, :help buffers или :help tab-page-commands.