2010-08-30 15 views
41

Perché devi rendere la tua espressione regolare "molto magica" in modo da non dover sfuggire alle virgolette di cattura? E se imposti il ​​tuo ambiente in modo molto magico, non sei standard e potresti avere problemi di conformità. Mi sto solo chiedendo perché Vim usi una sintassi regex diversa da say, perl?Perché VIM ha una propria sintassi regex?

+23

Sì, e perché quando digito la parola "grande" viene inserita solo la "g"? –

+1

La modalità regex di Trova e sostituisci di Visual Studio è anche non standard, anche se avevano un motore regex standard perfettamente funzionante in .net. Prendi quello che vuoi. – Blindy

+1

@Blindy: non è proprio così semplice. Quando è stato creato l'aroma VS, l'aroma regex .NET non esisteva ancora. Avrebbe potuto basare la sintassi VS direttamente su Perl come faceva il team di .NET, ma hanno scelto di mantenere la continuità con gli strumenti MS precedenti. Non sto difendendo quella scelta, solo sottolineando che non era completamente cerebralmente morto. ;) –

risposta

47

La maggior parte delle funzioni vi (e quindi vim) sono state derivate da ed. vi e ed entrambi predate perl di almeno una decade o due. Una domanda migliore potrebbe essere "perché Perl non usa la stessa sintassi regex di vi?".

Naturalmente, si potrebbe anche sostenere che il tipo di espressioni regolari che si vorrebbe scrivere all'interno di un editor di testo per eseguire attività comuni sono probabilmente piuttosto diversi da quelli che si potrebbe desiderare di scrivere all'interno di un linguaggio di programmazione.

+23

Vero, ma personalmente, IMO, c'è già troppa frammentazione nello spazio mentale degli sviluppatori. I PCRE sono praticamente uno "standard del settore". Una delle cose che amo di VIM è quante opzioni ha. L'utilizzo di PCRE come motore di ricerca/sostituzione dovrebbe essere almeno consentito come flag ./configure – rossipedia

+5

È un prodotto open source. Se questa è una caratteristica killer per te, perché non implementarla e inviarla come patch? Forse ci sono altri che si sentono allo stesso modo e trarrebbero beneficio da questo. – Gian

+2

@Bryan: la regex di Vim ha un sacco di funzioni non disponibili in PCRE - tutto inizia con '\%' o '\\ _'. –

6

C'è un plugin chiamato eregex.vim che si traduce da PCRE alla sintassi di Vim. Ci vuole over a thousand lines of vim to achieve that translation!

+2

"Richiede più di mille righe di vim per ottenere quella traduzione!"Ad essere onesti, (attualmente) 279 di quelle righe sono commenti. :-) Ma ancora 803 righe (1082 in totale) di codice! Piuttosto muscoloso. –

Problemi correlati