Я хочу использовать регулярные выражения 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Плагин. Он очень полезен и у меня не было с ним никаких проблем.