Mode diabolique et expressions régulières

10

Dans Vim, si je veux rechercher tous les noms de variables LX où X est un nombre, je peux simplement taper /L\d. Cependant, cela ne semble pas fonctionner evil.

Existe-t-il une autre syntaxe pour les expressions régulières en mode Evil, ou vais-je devoir recourir à certaines fonctionnalités d'Emacs pour la recherche et le remplacement à l'aide d'expressions régulières?

J'utilise spacemacs, et je suis assez désemparé concernant la plupart des choses dans Emacs, restant joyeusement en mode Mal toute la journée :).

Michelrandahl
la source
Où essayez-vous de chercher? Dans un document ou dans les variables globales d'emac?
Jules
Je recherche dans un document texte
Michelrandahl
Utilisez-vous isearchou quelque chose comme helm-swoopou swiper? Les deux derniers devraient pouvoir faire ce que vous voulez facilement. Si vous souhaitez utiliser la isearchfonction normale mais que vous souhaitez utiliser un moteur d'expression rationnelle différent, consultez github.com/benma/visual-regexp-steroids.el
Jules

Réponses:

7

evilutilise les installations d'expression rationnelle d'Emacs sous le capot. Malheureusement, Emacs ne semble pas avoir de classe de syntaxe distincte pour les chiffres et ne reconnaît pas la classe \d regexp .

Donc, pour faire correspondre votre variable nommée LXXest un chiffre, il semble que vous soyez coincé avec le maladroit /L[0-9]ou le plus maladroit /L[[:digit:]].

Notez qu'en principe, il semble que vous puissiez utiliser des codes de caractères répertoriés par describe-categories:

`\cc`

matches any character whose category is *c*.  Here *c* is a
character that represents a category: thus, 'c' for Chinese
characters or 'g' for Greek characters in the standard
category table. You can see the list of all the currently
defined categories with `M-x describe-categories RET`. You can
also define your own categories in addition to the standard
ones using the `define-category` function (see Categories).

Selon describe-categories, les chiffres appartiennent à la catégorie 6. Par conséquent, cela /L\c6devrait fonctionner (même si ce n'est pas le cas pour moi, même si d'autres catégories le font). Pourtant, vous ne vous épargneriez pas beaucoup de mal à taper par rapport à /L[0-9].

Dan
la source
Merci beaucoup! Je pense que je peux vivre avec la syntaxe maladroite pour l'instant. Juste heureux de chercher à remplacer de manière plus pratique à nouveau, et je viens de tester qu'il fonctionne même avec des modèles de capture, yay!
Michelrandahl