Ag Silver Searcher: каковы правила для шаблонов?
Я использую ag
в Vim с хорошими результатами для поиска строк/файлов.
Однако, похоже, не так много документации, как шаблоны построены для ag.
Я пытаюсь использовать ag вместо vimgrep в примере из Практической книги Vim.
Я хочу найти каждое появление "Pragmatic Vim" во всех файлах в каталоге рекурсивно и заменить эту строку на "Practical Vim". В некоторых файлах также есть "Прагматическая книжная полка", и эта строка должна оставаться.
книга предлагает такой подход:
/Pragmatic\ze Vim
:vimgrep /<C-r>// **/*.txt
И после этого, заполните список fastfix с помощью команды :Qargs
plugin и, наконец, :argdo %s//Practical/g
Теперь, как указать шаблон /Pragmatic\ze
с помощью ag
?
Является ли ag
вообще для того, что я пытаюсь сделать здесь?
Ответы
Ответ 1
Средство Silver Searcher использует синтаксис PCRE (Perl-Compatible Regular Expression). Поэтому вместо Vim \ze
вам нужно использовать синтаксис Perl для позитивного просмотра: (?=pattern)
. (Соответствующий lookbehind для \zs
будет (?<=pattern)
.)
Я показываю ваш пример в командной строке, но он должен быть идентичным изнутри Vim:
$ ag 'Pragmatic(?= Vim)'