Можно ли использовать регулярные выражения Perl в командной строке vim?

Можно ли использовать регулярные выражения Perl в командной строке vim?

Я хочу использовать регулярные выражения perl в командной строке vim. Например, чтобы сделать слова в текущей строке заглавными, можно ввести:

:s/(\w+)/\u$1/g

решение1

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

:.!perl -pe "s/(\w+)/\u\1/g"

которая отфильтрует текущую строку с помощью этой команды Perl. (Здесь :для перехода в режим командной строки, а .следующее означает текущую строку; вы также можете указать диапазон строк или %весь файл и т. д.)

Если вы хотите использовать встроенные шаблоны подстановки vim, то самое близкое, что вы можете сделать, это использовать «очень волшебную» опцию vim, \v, например:

:s/\v(\w+)/\u\1/g

см. :help patternи :help substituteдля более подробной информации. Я не думаю, что "very magic" полностью идентично шаблонам perl, но очень близко. В любом случае, вы всегда можете использовать сам perl, если он вам более удобен, как указано выше.

решение2

Вы также можете использовать:

/\v"your regex"

вместо:

/"your regex"

решение3

Нет, вы не можете использовать регулярные выражения Perl таким образом. Для получения помощи в изучении эквивалентов Vim для компонентов регулярных выражений Perl см.

:help perl-patterns

Однако вы можете использовать Perl в качестве внешнего фильтра, как объяснил frabjous. Вы также можете выполнять команды Perl в Vim, используя интерфейс Perl, если ваш Vim был скомпилирован с этой +perlфункцией. Смотрите

:help if_perl.txt

решение4

Использоватьeregex.vimПлагин. Он очень полезен и у меня не было с ним никаких проблем.

Связанный контент