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 pattern
e :help substitute
para 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 +perl
recurso. Ver
:help if_perl.txt
Responder4
Use oeregex.vimplugar. É muito útil e não tive problemas com isso.