61 votes

Pourquoi VIM a-t-il sa propre syntaxe de regex ?

Pourquoi devez-vous rendre votre regex "très magique" pour ne pas avoir à échapper à vos guillemets ? Et si vous définissez votre environnement comme étant très magique, vous n'êtes pas standard et vous risquez d'avoir des problèmes de conformité. Je me demande simplement pourquoi vim utilise une syntaxe de regex différente de celle de perl, par exemple.

33 votes

Oui, et pourquoi, lorsque je tape le mot "big", seul le "g" est inséré ?

1 votes

Le mode de recherche et de remplacement de Visual Studio n'est pas non plus standard, alors qu'ils disposaient d'un moteur de recherche parfaitement standard dans .net. Prenez-en ce que vous voulez.

1 votes

@Blindy : Ce n'est pas aussi simple. Lorsque la saveur VS a été créée, la saveur .NET regex n'existait pas encore. Ils auraient pu baser la syntaxe de VS directement sur celle de Perl, comme le faisait l'équipe .NET, mais ils ont choisi de maintenir la continuité avec les outils MS antérieurs. Je ne défends pas ce choix, je signale juste qu'il n'était pas complètement irréfléchi ;)

74voto

Gian Points 9459

La plupart des fonctionnalités de vi (et donc de vim) sont dérivées de ed. vi et ed sont tous deux antérieurs à perl d'au moins une ou deux décennies. Une meilleure question pourrait être "pourquoi Perl n'utilise-t-il pas la même syntaxe de regex que vi ?".

Bien entendu, on pourrait également faire valoir que les types d'expressions régulières que l'on souhaite écrire dans un éditeur de texte pour effectuer des tâches courantes sont probablement assez différents de ceux que l'on souhaite écrire dans un langage de programmation.

46 votes

C'est vrai, mais personnellement, il y a déjà trop de fragmentation dans l'espace mental des développeurs. Les PCRE sont pratiquement une "norme industrielle". L'une des choses que j'aime dans VIM, c'est le nombre d'options qu'il propose. L'utilisation de PCRE comme moteur de recherche/remplacement devrait au moins être autorisée en tant que drapeau ./configure.

11 votes

Il s'agit d'un produit open source. Si cette fonctionnalité vous intéresse, pourquoi ne pas l'implémenter et la soumettre en tant que correctif ? Peut-être y a-t-il d'autres personnes qui pensent la même chose et qui en bénéficieraient.

2 votes

@Bryan : Les regex de Vim ont une tonne de fonctionnalités qui ne sont pas disponibles dans PCRE - tout ce qui commence par \% o \\_ .

10voto

Evgeni Sergeev Points 1517

Il existe un plugin appelé eregex.vim qui traduit la syntaxe de PCRE en syntaxe de Vim. Il prend plus de mille lignes de vim pour réaliser cette traduction !

4 votes

"Il faut plus de mille lignes de vim pour réaliser cette traduction ! Pour être juste, (actuellement) 279 de ces lignes sont des commentaires :-) Mais cela fait quand même 803 lignes (1082 au total) de code ! Plutôt costaud.

0 votes

Je suis curieux de savoir pourquoi ils ne peuvent pas effectuer la traduction à l'aide d'expressions régulières.

2voto

user2571881 Points 1787

En plus des raisons mentionnées, vim a quelques cartes dans sa manche quand il s'agit de regex, par exemple, pour correspondre à l'aspect positif derrière nous :

:%s/^foo \zsbar/moo/g

La commande ci-dessus remplacera "bar" par "moo" dans les lignes commençant par "foo".

les \zs facilite la mise en place d'un look-behind positif et d'un \ze Il est plus facile d'avoir une vision positive de l'avenir.

Nous disposons également d'un moyen de faire correspondre uniquement dans la "zone visuelle" -> \%V

:'<,'>s/\%Vthis/that/g

Bien qu'utilisant l'indicateur global "g", la substitution est limitée à l'espace visuel en raison de l'utilisation de l'indicateur global "g", la substitution est limitée à l'espace visuel. \%V

Pour lire un article génial sur les possibilités offertes par les regex de vim, suivez ce lien : https://bitbucket.org/snippets/sergio/7nzqxx

Nous pouvons également utiliser quelques astuces de "submatch" sur la substitution de vim https://dev.to/voyeg3r/vim-math-on-vim-substitution-4obo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X