Eu quero usar expressões regulares perl na linha de comando do vim. Por exemplo, para colocar em maiúscula as palavras na linha atual, você pode digitar:
:s/(\w+)/\u$1/g
Eu quero usar expressões regulares perl na linha de comando do vim. Por exemplo, para colocar em maiúscula as palavras na linha atual, você pode digitar:
:s/(\w+)/\u$1/g
Respostas:
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 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ê deseja usar os padrões de substituição embutidos no vim, o mais próximo que você vai 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. Eu não acho que "muita mágica" seja idêntico aos padrões de 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.
(
é tratado especialmente enquanto {
não é: "todos os caracteres ASCII, exceto '0' - '9', 'a' - 'z', 'A' - 'Z' e '_' tem um significado especial. " obrigado!
Não, você não pode usar expressões regulares do 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, 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. Vejo
:help if_perl.txt
:help perl-patterns
resolveu a única coisa que eu já odiava sobre vim
Você também pode usar:
/\v"your regex"
ao invés de:
/"your regex"
nnoremap / /\v
e vnoremap / /\v
ao seu .vimrc para que, quando você digitar /
, funcione.
Aqui está uma solução em http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Verifique com :ver
isso +perl
ou +perl/dyn
está compilado.)
Use o plug- in eregex.vim . É muito útil e não tive problemas com isso.