Quiero usar expresiones regulares perl en la línea de comando vim. Por ejemplo, para poner en mayúscula las palabras en la línea actual, podría escribir:
:s/(\w+)/\u$1/g
Quiero usar expresiones regulares perl en la línea de comando vim. Por ejemplo, para poner en mayúscula las palabras en la línea actual, podría escribir:
:s/(\w+)/\u$1/g
Respuestas:
Puede filtrar cualquier línea o rango de líneas a través de un comando externo en vim, usando!. Por ejemplo, puedes hacer:
:.!perl -pe "s/(\w+)/\u\1/g"
que filtrará la línea actual a través de ese comando perl. (Aquí :
para ingresar al modo de línea de comando, y lo .
que sigue significa la línea actual; también puede especificar un rango de línea o %
para todo el archivo, etc.)
Si desea usar los patrones de sustitución incorporados de vim, lo más cerca que estará de usar es la opción "muy mágica" de vim, \ v, así:
:s/\v(\w+)/\u\1/g
ver :help pattern
y :help substitute
para más detalles. No creo que "muy mágico" sea bastante idéntico a los patrones de Perl, pero está muy cerca. De todos modos, siempre puedes usar perl si te sientes más cómodo con él, como se indicó anteriormente.
(
se trata especialmente mientras {
no se trata: "todos los caracteres ASCII excepto '0' - '9', 'a' - 'z', 'A' - 'Z' y '_' tiene un significado especial ". ¡Gracias!
No, no puedes usar las expresiones regulares de Perl de esa manera. Para obtener ayuda para aprender los equivalentes de Vim para los componentes de expresión regular de Perl, vea
:help perl-patterns
Sin embargo, puede usar Perl como un filtro externo como lo explica frabjous. También puede ejecutar comandos Perl dentro de Vim usando la interfaz Perl, si su Vim fue compilado con la +perl
función. Ver
:help if_perl.txt
:help perl-patterns
ha resuelto lo que antes odiaba de vim
También puedes usar:
/\v"your regex"
en lugar de:
/"your regex"
nnoremap / /\v
y vnoremap / /\v
a su .vimrc para que cuando escriba /
simplemente funcione.
Aquí hay una solución de http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Verifique con :ver
eso +perl
o +perl/dyn
esté compilado).
Use el complemento eregex.vim . Es muy útil y no he tenido problemas con eso.