Comment puis-je faire correspondre automatiquement «snake_case» lorsque je recherche par erreur «snake-case»?


8

Je tape souvent "_" comme "-" lors d'un rapide isearch-forward.

Par exemple, je recherche snake_caseet tape accidentellement C-s snake-caseet n'obtiens aucun résultat. Dans le meilleur des cas, je le constate assez rapidement et je n'ai pas à supprimer trop de termes de recherche, dans le pire des cas, je dois essentiellement le retaper.

Existe-t-il un moyen de se connecter isearch-forwardpour changer ma requête en une requête isearch-forward-regexpsimilaire snake[-_]case?

J'ai besoin de chercher lisp-casesuffisamment souvent pour que le simple fait de changer "-" en "_" cause plus de problèmes qu'il n'en résout.


6
Vous pouvez éviter de taper à nouveau le tout. Faites M-epour sauter au mini-tampon pour éditer la chaîne de recherche pendant que isearch est actif. Ensuite C-e M-b BKSPC _et C-spour continuer la recherche.
Kaushal Modi du

En utilisant un moteur de recherche de correspondance plus moderne et flou, vous tapez simplement `` sc '' et snake-case, SnakeCase et snake_case all match (utilisez ido avec flx ou somesuch par exemple)
Tom Regner

@TomRegner Comment faites-vous la recherche 'flex' dans isearch?
Kaushal Modi

@kaushalmodi bitbucket.org/jpkotta/flex-isearch pourrait faire l'affaire
Tom Regner

Réponses:


8

Je ne peux pas imaginer un tel comportement automatisé ne vous causant pas de douleur alors que ce n'est pas ce que vous vouliez qu'il fasse.

À mon avis, la recommandation de kaushalmodi M-eest la meilleure réponse - il est préférable de faciliter la correction du problème plutôt que d'essayer de faire lire isearch votre esprit.

Notez que isearch est suffisamment intelligent pour prendre note du premier caractère où la recherche a échoué et M-eplace automatiquement le curseur à cette position. Ainsi, même lorsque vous avez continué à taper les caractères suivants, la séquence de touches typique pour corriger le modèle et reprendre la recherche serait juste:

M-eC-d_C-s


C'est génial! TIL: isearch est suffisamment intelligent pour prendre note du premier caractère où la recherche a échoué et M-eplace automatiquement le curseur à cette position
Kaushal Modi

Je ne savais pas M-e, cela rend certainement les choses plus faciles, d'autant plus que cela revient à la faute de frappe.
Tom

5

Si vous utilisez swiper et recherchez snake case, il correspondra à la fois à snake_caseet snake-case.

swiperest une nouvelle isearchalternative qui vous donne un aperçu dans le mini-tampon lors de votre recherche.

swiper.png

Dans l'image ci-dessus, l'entrée est ivy mcelle qui se traduit par l'expression régulière ivy.*m. Il y a 36 correspondances pour cette expression régulière. Vous pouvez naviguer entre eux avec C-s/ C-r ou C-n/ C-p.

Vous pouvez installer swiperavec M-x package-install. Il est disponible dans MELPA et GNU ELPA.


swiper (et swiper-helm) sont soignés. Je les ai ajoutés à ma configuration et je les teste depuis quelques jours. Pas tout à fait ce que je cherchais cependant, car je vais devoir taper quelque chose de différent de ce que je recherche, je verrai si je m'y habitue. Aussi, une idée de comment faire fonctionner Cw and Me en mode Swiper?
Tom

Que sont C-wet sont M-ecensés faire? Vous pouvez poster sur github.com/abo-abo/swiper/issues si vous voulez que j'ajoute quelque chose.
abo-abo

Me est décrit dans les commentaires et autres réponses - il modifie la recherche dans le mini-tampon. Cw étend le terme de recherche avec le symbole sous le curseur.
Tom

OK, vous n'avez pas besoin M-ede balai, il est déjà dedans M-e. Et pour obtenir le résultat, appuyez sur M-n. Il n'y a aucun moyen de l'étendre encore, mais vous pouvez simplement continuer à taper.
abo-abo

Mn c'est ce que je cherchais, c'est bon à savoir. La fonctionnalité utile Me est qu'elle déplace le point vers le premier caractère non correspondant, je ne sais pas si c'est pratique avec la correspondance floue.
Tom
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.