Come posso abbinare automaticamente "snake_case" quando cerco "snake-case" per errore?


8

Spesso scrivo erroneamente "_" come "-" quando faccio una rapida isearch-forward.

Ad esempio, cerco snake_casee digito per errore C-s snake-casee non ottengo risultati. Nel migliore dei casi noto abbastanza rapidamente e non devo cancellare troppo il termine di ricerca, nel peggiore dei casi devo praticamente ripeterlo.

C'è un modo per agganciarsi isearch-forwardper cambiare la mia query in un isearch-forward-regexplike snake[-_]case?

Devo cercare lisp-caseabbastanza spesso che semplicemente cambiare "-" in "_" causerà più problemi di quanti ne risolva.


6
Puoi evitare di digitare nuovamente tutto. Fate M-esaltare il mini-buffer per modificare la stringa di ricerca, mentre isearch è attivo. Quindi C-e M-b BKSPC _e C-sper continuare la ricerca.
Kaushal Modi

Utilizzando un "motore" di ricerca più moderno e sfocato, si digita semplicemente "sc" e snake-case, SnakeCase e snake_case corrispondono tutti (usare ido insieme con flx o somesuch per esempio)
Tom Regner

@TomRegner Come si effettua la ricerca "flessibile" isearch?
Kaushal Modi

@kaushalmodi bitbucket.org/jpkotta/flex-isearch may do
Tom Regner

Risposte:


8

Non riesco a immaginare un simile comportamento automatizzato che non ti causi dolore quando non è quello che volevi che facesse.

A mio avviso, la raccomandazione di Kaushalmodi M-eè la risposta migliore: semplificare la correzione del problema sembra preferibile a cercare di far leggere la tua ricerca.

Nota che isearch è abbastanza intelligente da prendere nota del primo carattere in cui la ricerca non è riuscita e M-eposiziona automaticamente il cursore in quella posizione, quindi, anche quando hai continuato a digitare i caratteri successivi, la sequenza di tasti tipica per correggere lo schema e riprendere la ricerca sarebbe solo:

M-eC-d_C-s


È fantastico! TIL: isearch è abbastanza intelligente da prendere nota del primo carattere in cui la ricerca non è riuscita e M-eposiziona automaticamente il cursore in quella posizione
Kaushal Modi

Non lo sapevo M-e, questo certamente rende le cose più facili, specialmente dal momento che torna indietro all'errore di battitura.
Tom

5

Se usi Swiper e cerchi snake case, corrisponderà sia a snake_caseche a snake-case.

swiperè una nuova isearchalternativa che ti offre una panoramica del minibuffer durante la ricerca.

swiper.png

Nell'immagine sopra, l'input è ivy mche si traduce in regex ivy.*m. Ci sono 36 partite per questa regex. Puoi navigare tra di loro con C-s/ C-r o C-n/ C-p.

È possibile installare swipercon M-x package-install. È disponibile sia in MELPA che in GNU ELPA.


swiper (e swiper-helm) sono puliti. Li ho aggiunti alla mia configurazione e li sto provando da alcuni giorni. Non proprio quello che cercavo, dato che dovrò digitare qualcosa di diverso da quello che sto cercando, vedrò se mi abituerò. Inoltre, hai idea di come far funzionare Cw and Me mentre sei in modalità Swiper?
Tom,

Cosa sono C-we M-edovrebbero fare? Puoi pubblicare su github.com/abo-abo/swiper/issues se vuoi che aggiunga qualcosa.
abo-ABO

Me è descritto nei commenti e in altre risposte: modifica la ricerca nel minibuffer. Cw espande il termine di ricerca con il simbolo sotto il cursore.
Tom,

OK, non hai bisogno M-edi Swiper, è già dentro M-e. E per ottenere il punto giusto, premere M-n. Non c'è ancora modo di espanderlo, ma puoi semplicemente continuare a digitare.
abo-ABO

Mn è quello che stavo cercando, buono a sapersi. La caratteristica utile di Me è che sposta il punto sul primo personaggio non corrispondente, non so se sia pratico con la corrispondenza fuzzy.
Tom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.