Подтвердить что ты не робот

Vim: Интерактивный поиск и замена регулярными выражениями, совместимыми с perl

В соответствии с эта страница вы можете использовать регулярное выражение, совместимое с perl, с

:perldo s/pattern/insert/g.

Это отлично работает.

Но как я могу получить интерактивный поиск и замену синтаксисом PCRE в vim?

Так как это не работает с perldo, я ищу другое решение.

4b9b3361

Ответ 1

До текущей версии vim версии нет возможности :s/[perlRegex]/bar/c

Итак, вы запрашиваете функцию, которая не существует.

Вы можете выполнить сопоставление с verymagic, но это не флаг совместимый с Perl Regex. Он по-прежнему использует движок vimregex, просто изменил способ ускорения шаблонов регулярных выражений.

Например, в perl вы можете делать lookahead/behind (?<=foo)..., (?=foo), (?!foo).., вы можете использовать удобный \K: som.*ing\Kwhatever и т.д., вы не можете использовать этот синтаксис в vim напрямую, независимо от того, какой "магический" уровень вы есть комплект. Vim имеет ту же функцию, но различный синтаксис:

\@=
\@!
\@<=

а также \zs \ze очень удобны, даже более мощные, чем perl \K.

Vim - это редактор, с регулярным выражением vim, вы можете не только выполнять текстовое сопоставление, но также сопоставлять базу с визуальным выбором, позицией курсора и т.д.

Если вам действительно нужно выполнить сложное сопоставление шаблонов и действительно нужно сделать их в vim, изучите vime regex! Это не сложно для вас, если вы "хорошо знаете ПК"

Ответ 2

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

:s/\vfoo/bar/gc

Ответ 3

В вашем примере s/pattern/insert/g - это команда perl, а не команда Vim, использующая синтаксис регулярных выражений, совместимый с perl.

Если perl не имеет эквивалента Vim /c, вам нужно будет найти альтернативный метод, например... запись фактического perl script.

Ответ 4

Я предлагаю попробовать плагин eregex. Он сопоставляет регулярные выражения, совместимые с perl, с синтаксисом regex VIM.