Wie kann ich "snake_case" automatisch abgleichen, wenn ich versehentlich nach "snake-case" suche?


8

Ich tippe "_" häufig als "-" ein, wenn ich schnell mache isearch-forward.

ZB suche ich snake_caseund tippe versehentlich C-s snake-caseund erhalte keine Ergebnisse. Bester Fall Ich merke es schnell genug und muss nicht zu viel vom Suchbegriff löschen. Im schlimmsten Fall muss ich ihn im Grunde noch einmal eingeben.

Gibt es eine Möglichkeit in einzuhaken isearch-forwardmeine Abfrage in eine zu ändern , isearch-forward-regexpwie snake[-_]case?

Ich muss tatsächlich lisp-caseoft genug suchen , dass das einfache Ändern von "-" in "_" mehr Probleme verursacht als löst.


6
Sie können vermeiden, das Ganze erneut zu tippen. Sind M-ean den Mini-Puffer zu bearbeiten die Suche zu springen , während isearch aktiv ist. Dann C-e M-b BKSPC _und C-sum die Suche fortzusetzen.
Kaushal Modi

Durch die Verwendung eines moderneren, Fuzzy Matching Suche ‚Motors‘, geben Sie einfach ‚sc‘ und Schlangen Fall SnakeCase und snake_case Spiel (Verwendung ido zusammen mit flx, etc. zu jagen zum Beispiel)
Tom Regner

@ TomRegner Wie können Sie die Flex-Suche durchführen isearch?
Kaushal Modi

@kaushalmodi bitbucket.org/jpkotta/flex-isearch könnte tun
Tom Regner

Antworten:


8

Ich kann mir kein solches automatisiertes Verhalten vorstellen, das Ihnen dann keine Schmerzen verursacht, wenn Sie es nicht wollten.

Meiner Meinung nach ist die Empfehlung von kaushalmodi M-edie beste Antwort - es scheint besser zu sein, das Problem zu beheben, als zu versuchen, isearch dazu zu bringen, Ihre Gedanken zu lesen.

Beachten Sie, dass isearch intelligent genug ist, um das erste Zeichen zu notieren, bei dem die Suche fehlgeschlagen ist, und M-eden Cursor automatisch an dieser Position zu platzieren, sodass selbst wenn Sie weiterhin nachfolgende Zeichen eingeben , die typische Tastenfolge zum Korrigieren des Musters und zum Fortsetzen der Suche wäre nur:

M-eC-d_C-s


Das ist großartig! TIL: isearch ist klug genug, um das erste Zeichen zu notieren, bei dem die Suche fehlgeschlagen ist, und M-eplatziert den Cursor automatisch an dieser Position
Kaushal Modi

Ich wusste nicht M-e, das macht die Sache sicherlich einfacher, zumal es zurück zum Tippfehler springt.
Tom

5

Wenn Sie Swiper verwenden und nach suchen snake case, stimmt es mit beiden snake_caseund überein snake-case.

swiperist eine neue isearchAlternative, die Ihnen bei der Suche einen Überblick im Minibuffer gibt.

swiper.png

Im obigen Bild ist die Eingabe die ivy m, die in den regulären Ausdruck übersetzt wird ivy.*m. Es gibt 36 Übereinstimmungen für diesen regulären Ausdruck. Sie können mit C-s/ C-r oder C-n/ zwischen ihnen navigieren C-p.

Sie können installieren swipermit M-x package-install. Es ist sowohl in MELPA als auch in GNU ELPA erhältlich.


Swiper (und Swiper-Helm) sind ordentlich. Ich habe sie meinem Setup hinzugefügt und probiere sie einige Tage lang aus. Nicht ganz das, wonach ich gesucht habe, da ich etwas anderes eingeben muss als das, wonach ich suche. Ich werde sehen, ob ich mich daran gewöhne. Haben Sie auch eine Idee, wie Sie Cw und Me im Swiper-Modus zum Laufen bringen können?
Tom

Was sollen C-wund M-esollen? Sie können unter github.com/abo-abo/swiper/issues posten, wenn ich etwas hinzufügen soll.
abo-abo

Ich bin in den Kommentaren und anderen Antworten beschrieben - es bearbeitet die Suche im Minibuffer. Cw erweitert den Suchbegriff um das Symbol unter dem Cursor.
Tom

OK, du brauchst keinen M-eSwiper, er ist schon drin M-e. Und um das Ding auf den Punkt zu bringen, drücken Sie M-n. Es gibt noch keine Möglichkeit, es zu erweitern, aber Sie können einfach weiter tippen.
Abo-Abo

Mn ist das, wonach ich gesucht habe, das ist gut zu wissen. Das nützliche Feature von Me ist, dass es den Punkt auf das erste nicht übereinstimmende Zeichen verschiebt. Ich weiß jedoch nicht, ob dies mit dem Fuzzy-Matching praktisch ist.
Tom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.