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

20

Eu quero usar expressões regulares perl na linha de comando do vim. Por exemplo, para capitalizar as palavras na linha atual, você pode digitar:

:s/(\w+)/\u$1/g
    
por user51549 06.10.2010 / 19:17

5 respostas

15

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/g"

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

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

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

veja :help pattern e :help substitute para mais detalhes. Eu não acho que "muito mágica" seja bastante idêntica aos padrões de Perl, mas é muito próxima. De qualquer forma, você sempre pode usar o próprio perl se estiver mais confortável com ele, como acima.

    
por 06.10.2010 / 20:07
7

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

:help perl-patterns

No entanto, você pode usar Perl como um filtro externo, como explicado por frabjous. Você também pode executar comandos Perl dentro do Vim usando a interface Perl, se o seu Vim foi compilado com o recurso +perl . Veja

:help if_perl.txt
    
por 06.10.2010 / 20:25
4

Você também pode usar:

/\v"your regex"

em vez de:

/"your regex"
    
por 26.02.2011 / 23:46
2

Use o plug-in eregex.vim . É muito útil e não tive problemas com isso.

    
por 18.03.2014 / 09:55
2

Veja uma solução do link

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

(Verifique com :ver em que +perl ou +perl/dyn é compilado.)

    
por 22.03.2016 / 11:39

Tags