Я хочу использовать регулярные выражения perl в командной строке vim. Например, чтобы использовать заглавные буквы в текущей строке, вы можете набрать:
:s/(\w+)/\u$1/g
Вы можете отфильтровать любую строку или диапазон строк с помощью внешней команды в vim, используя!. Например, вы можете сделать:
:.!perl -pe "s/(\w+)/\u\1/g"
который отфильтрует текущую строку через эту команду perl. (Здесь :
чтобы перейти в режим командной строки, а .
Что следует, означает текущую строку; вы также можете указать диапазон строк или %
для всего файла и т.д.)
Если вы хотите использовать встроенные шаблоны подстановки в vim, вам лучше всего использовать опцию vim "очень волшебная", \v, вот так:
:s/\v(\w+)/\u\1/g
см . :help pattern
и :help substitute
для более подробной информации. Я не думаю, что "очень волшебство" вполне идентично шаблонам Perl, но очень близко. В любом случае, вы всегда можете использовать сам Perl, если вам удобнее, как описано выше.
Нет, вы не можете использовать регулярные выражения Perl таким образом. Для получения справки по изучению эквивалентов Vim для компонентов регулярных выражений Perl см.
:help perl-patterns
Однако вы можете использовать Perl в качестве внешнего фильтра, как объяснено в frabjous. Вы также можете выполнять команды Perl в Vim, используя интерфейс Perl, если ваш Vim был скомпилирован с функцией +perl
. Увидеть
:help if_perl.txt
Вы также можете использовать:
/\v"your regex"
вместо:
/"your regex"
Вот решение от http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Проверьте с помощью :ver
что +perl
или +perl/dyn
скомпилированы в.)
Используйте плагин eregex.vim . Это очень полезно, и у меня не было проблем с этим.