Ketika saya lakukan M-x query-replaceuntuk mengganti semua kemunculan voleh w, maka itu juga cocok V(huruf besar V). Cara memaksa emacs hanya menemukan huruf kecilv ?
Ketika saya lakukan M-x query-replaceuntuk mengganti semua kemunculan voleh w, maka itu juga cocok V(huruf besar V). Cara memaksa emacs hanya menemukan huruf kecilv ?
Jawaban:
(customize-set-variable case-fold-search nil)
Atau ikat variabel itu (opsi) dalam perintah Anda sendiri yang jika tidak hanya pembungkus saja query-replace. Ini memiliki keuntungan bahwa itu tidak mengubah nilai variabel untuk penggunaan umum, di luar penggantian-permintaan.
Lihat juga variabel case-replace, yang mengontrol case untuk teks pengganti.
Lihat juga C-h f query-replace, di mana dikatakan, misalnya:
Matching tidak tergantung pada case jika
case-fold-searchnon-nil dan FROM-STRING tidak memiliki huruf besar. Penggantian memindahkan pola huruf dari teks lama ke teks baru, jikacase-replacedancase-fold-searchtidak nol dan FROM-STRING tidak memiliki huruf besar
Lihat juga komentar di bawah ini, dan bug Emacs # 20687 , di mana tunjukkan bagaimana Anda dapat menambal perform-replaceuntuk memungkinkan Anda beralih lipat case query-replace.
Perhatikan juga bahwa kode yang ada untuk perform-replacemengikat case-fold-searchdengan cara ini (perhatikan variabel yang bergantung padanya):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-searchdengan cepat seperti yang bisa kita lakukan selama isearchmenggunakan M-cpenjilidan. Namun sayangnya query-replacememang sudah memiliki modenya peta.
query-replace-map: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))dan (define-key query-replace-map "C" 'toggle-case). Tetapi penanganan kunci di peta itu sulit dikodekan perform-replace. Anda mungkin ingin M-x report-emacs-bug, untuk membuat perform-replacekode menjadi lebih terbuka, sehingga kunci dapat ditambahkan ke peta. Setidaknya harus memiliki klausa mundur yang hanya memanggil cmd yang terikat pada kunci.
query-replace-mapsebelumnya.
perform-replaceuntuk menambahkan condklausa tambahan yang memanggil kunci yang telah Anda tetapkan query-replace-map. Letakkan klausa baru tepat sebelum klausa catch-all t. Ini adalah klausa baru:(def (call-interactively def)) . Tidak bisa lebih sederhana.
(customize-set-variable case-fold-search nil)memberikan kesalahan customize-set-variable: Attempt to set a constant symbol: nil. Saya juga mencoba keduanya (setq case-fold-search nil)dan (setq case-replace nil)tetapi kueri masih cocok dengan huruf besar V.