2010-08-30 18 views
41

¿Por qué tienes que hacer tu expresión regular "muy mágica" para que no tengas que escapar de tus citas de captura? Y si configura su entorno como muy mágico, no es estándar y puede tener problemas de cumplimiento. Me pregunto por qué vim usa una sintaxis de expresiones regulares diferente a decir, perl?¿Por qué VIM tiene su propia sintaxis de expresiones regulares?

+23

Sí, y ¿por qué es que cuando escribo la palabra 'grande' solo se inserta 'g'? –

+1

El modo de búsqueda y reemplazo de expresiones regulares de Visual Studio tampoco es estándar, a pesar de que tenían un motor de expresiones regulares estándar perfectamente bueno en .NET. Toma de eso lo que quieras. – Blindy

+1

@Blindy: No es así de simple. Cuando se creó el sabor VS, el sabor de la expresión regular de .NET aún no existía. Podrían haber basado la sintaxis VS directamente en Perl como lo hacía el equipo .NET, pero eligieron mantener la continuidad con las herramientas MS anteriores. No defiendo esa elección, solo señalo que no estaba completamente cerebralmente muerto. ;) –

Respuesta

47

La mayoría de las características de vi (y por lo tanto de vim) fueron derivadas de ed. vi y ed ambos son anteriores a Perl por al menos una década o dos. Una mejor pregunta podría ser "¿por qué Perl no usa la misma sintaxis de expresiones regulares que vi?".

Por supuesto, también podría argumentarse que los tipos de expresiones regulares que uno desearía escribir dentro de un editor de texto para realizar tareas comunes probablemente sean bastante diferentes de las que podría desear escribir dentro de un lenguaje de programación.

+23

Cierto, pero personalmente, IMO, ya hay demasiada fragmentación en el espacio mental del desarrollador. Los PCRE son prácticamente un "estándar de la industria". Una de las cosas que me encanta de VIM es cuántas opciones tiene. El uso de PCRE como motor de búsqueda/reemplazo debe permitirse al menos como un indicador ./configure – rossipedia

+5

Es un producto de código abierto. Si esta es una característica importante para usted, ¿por qué no implementarla y enviarla como un parche? Tal vez haya otros que sientan lo mismo y se beneficien de esto. – Gian

+2

@Bryan: la expresión regular de Vim tiene muchas funciones no disponibles en PCRE, todo comienza con '\%' o '\\ _'. –

6

Hay un complemento llamado eregex.vim que se traduce de PCRE a la sintaxis de Vim. ¡Se necesita over a thousand lines of vim to achieve that translation!

+2

"¡Se necesitan más de mil líneas de vim para lograr esa traducción!"Para ser justos, (actualmente) 279 de esas líneas son comentarios. :-) Pero todavía 803 líneas (1082 en total) de código! Bastante carnoso. –

Cuestiones relacionadas