Posso usar expressões regulares Perl na linha de comando do vim?

Posso usar expressões regulares Perl na linha de comando do vim?

Quero usar expressões regulares Perl na linha de comando do vim. Por exemplo, para colocar as palavras na linha atual em maiúscula, você pode digitar:

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

Responder1

Você pode filtrar qualquer linha ou intervalo de linhas através de um comando externo no vim, usando!. Por exemplo, você pode fazer:

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

que irá filtrar a linha atual através desse comando perl. (Aqui :para entrar no modo de linha de comando, e o .que se segue significa a linha atual; você também pode especificar um intervalo de linhas ou %para o arquivo inteiro, etc.)

Se você quiser usar os padrões de substituição integrados do vim, o mais próximo que você chegará é usar a opção "muito mágica" do vim, \v, assim:

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

veja :help patterne :help substitutepara mais detalhes. Não acho que "muito mágico" seja idêntico aos padrões do Perl, mas é muito próximo. De qualquer forma, você sempre pode usar o próprio perl se estiver mais confortável com ele, como acima.

Responder2

Você também pode usar:

/\v"your regex"

em vez de:

/"your regex"

Responder3

Não, você não pode usar expressões regulares Perl dessa maneira. Para obter ajuda no aprendizado dos equivalentes do Vim para componentes de expressões regulares Perl, consulte

:help perl-patterns

No entanto, você pode usar Perl como filtro externo, conforme explicado por frabjous. Você também pode executar comandos Perl no Vim usando a interface Perl, se o seu Vim foi compilado com o +perlrecurso. Ver

:help if_perl.txt

Responder4

Use oeregex.vimplugar. É muito útil e não tive problemas com isso.

informação relacionada