regex - change - vim replace all file
Soporte de expresiones regulares multilĂnea en Vim (1)
Observé que la sintaxis de expresiones regulares estándar para la coincidencia en varias líneas es usar / s, así:
This is/nsome text
/This.*text/s
Esto funciona en Perl, por ejemplo, pero no parece ser compatible con Vim. En cambio, tengo que ser mucho más específico:
/This[^/r/n]*[/r/n]*text/
No puedo encontrar ninguna razón de por qué debería ser así, así que estoy pensando que probablemente me perdí los bits relevantes en la ayuda de vim.
¿Alguien puede confirmar este comportamiento de una forma u otra?
Sí, el modificador //s
de Perl no está disponible en las expresiones regulares de Vim. Consulte :h perl-patterns
para obtener detalles y una lista de otras diferencias entre Vim y Perl regexes.
En cambio, puedes usar /_.
, lo que significa "hacer coincidir cualquier carácter individual, incluida la nueva línea". Es un poco más corto que lo que tienes. Ver :h //_.
.
/This/_.*text/