Bagaimana saya dapat mencocokkan "snake_case" secara otomatis ketika saya mencari "snake-case" secara tidak sengaja?

8

Saya sering salah mengetik "_" sebagai "-" saat melakukan quick isearch-forward.

Misalnya saya mencari snake_casedan tidak sengaja mengetik C-s snake-casedan tidak mendapatkan hasil. Kasing terbaik saya perhatikan cukup cepat dan tidak harus menghapus terlalu banyak istilah penelusuran, kasing terburuk pada dasarnya saya harus mengetiknya lagi.

Apakah ada cara untuk menghubungkan isearch-forwarduntuk mengubah kueri saya menjadi isearch-forward-regexpsejenis snake[-_]case?

Saya perlu benar-benar lisp-casecukup sering mencari yang hanya mengubah "-" menjadi "_" akan menyebabkan lebih banyak masalah daripada memecahkannya.

Tom
sumber
6
Anda dapat menghindari mengetik semuanya lagi. Lakukan M-euntuk melompat ke buffer mini untuk mengedit string pencarian saat isearch aktif. Kemudian C-e M-b BKSPC _dan C-suntuk melanjutkan pencarian.
Kaushal Modi
Dengan menggunakan 'mesin' pencarian fuzzy yang lebih modern, Anda cukup mengetik 'sc' dan case-snake, SnakeCase dan snake_case all match (gunakan ido bersama dengan flx atau semacamnya misalnya)
Tom Regner
@ TomRegner Bagaimana Anda melakukan pencarian 'flex' isearch?
Kaushal Modi
@kaushalmodi bitbucket.org/jpkotta/flex-isearch mungkin lakukan
Tom Regner

Jawaban:

8

Saya tidak dapat membayangkan perilaku otomatis semacam itu yang tidak membuat Anda sakit ketika itu bukan yang Anda inginkan.

Menurut saya, rekomendasi kaushalmodi M-eadalah jawaban terbaik - membuatnya mudah untuk memperbaiki masalah tampaknya lebih baik daripada mencoba membuat isearch membaca pikiran Anda.

Perhatikan bahwa isearch cukup pintar untuk mencatat karakter pertama di mana pencarian gagal, dan M-emenempatkan kursor pada posisi itu secara otomatis, bahkan ketika Anda terus mengetik karakter berikutnya, urutan tombol khas untuk memperbaiki pola dan melanjutkan pencarian hanya akan menjadi:

M-eC-d_C-s

phils
sumber
Itu luar biasa! TIL: isearch cukup pintar untuk mencatat karakter pertama di mana pencarian gagal, dan M-emenempatkan kursor pada posisi itu secara otomatis
Kaushal Modi
Saya tidak tahu M-e, itu tentu membuat segalanya lebih mudah, terutama karena ia kembali ke kesalahan ketik.
Tom
5

Jika Anda menggunakan swiper dan mencari snake case, itu akan cocok dengan keduanya snake_casedan snake-case.

swiperadalah isearchalternatif baru yang memberi Anda gambaran umum dalam minibuffer saat Anda mencari.

swiper.png

Pada gambar di atas, inputnya adalah ivy myang diterjemahkan ke regex ivy.*m. Ada 36 pertandingan untuk regex ini. Anda dapat menavigasi di antara mereka dengan C-s/ C-r atau C-n/ C-p.

Anda dapat menginstal swiperdengan M-x package-install. Ini tersedia di MELPA dan GNU ELPA.

abo-abo
sumber
swiper (dan swiper-helm) rapi. Saya telah menambahkannya ke pengaturan saya dan sedang mencobanya selama beberapa hari. Tidak seperti apa yang saya kejar karena saya harus mengetik sesuatu yang berbeda dari apa yang saya cari, akan melihat apakah saya terbiasa dengan itu. Juga, ada ide bagaimana membuat Cw dan Me bekerja saat dalam mode swiper?
Tom
Apa yang seharusnya C-wdan M-eharus dilakukan? Anda dapat memposting di github.com/abo-abo/swiper/issues jika Anda ingin saya menambahkan sesuatu.
abo-abo
Saya dijelaskan dalam komentar dan jawaban lain - itu mengedit pencarian di minibuffer. Cw memperluas istilah pencarian dengan simbol di bawah kursor.
Tom
OK, Anda tidak perlu M-euntuk swiper, itu sudah di M-e. Dan untuk memahami masalahnya, tekan M-n. Belum ada cara untuk mengembangkannya, tetapi Anda bisa terus mengetik.
abo-abo
Mn adalah apa yang saya kejar, itu bagus untuk diketahui. Fitur berguna Me adalah bahwa ia memindahkan titik ke karakter pertama yang tidak cocok, saya tidak tahu apakah itu praktis dengan pencocokan fuzzy.
Tom