Ketika saya lakukan M-x query-replace
untuk mengganti semua kemunculan v
oleh w
, maka itu juga cocok V
(huruf besar V
). Cara memaksa emacs hanya menemukan huruf kecilv
?
15
Ketika saya lakukan M-x query-replace
untuk mengganti semua kemunculan v
oleh w
, maka itu juga cocok V
(huruf besar V
). Cara memaksa emacs hanya menemukan huruf kecilv
?
Jawaban:
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:Lihat juga komentar di bawah ini, dan bug Emacs # 20687 , di mana tunjukkan bagaimana Anda dapat menambal
perform-replace
untuk memungkinkan Anda beralih lipat casequery-replace
.Perhatikan juga bahwa kode yang ada untuk
perform-replace
mengikatcase-fold-search
dengan cara ini (perhatikan variabel yang bergantung padanya):sumber
case-fold-search
dengan cepat seperti yang bisa kita lakukan selamaisearch
menggunakanM-c
penjilidan. Namun sayangnyaquery-replace
memang 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 dikodekanperform-replace
. Anda mungkin inginM-x report-emacs-bug
, untuk membuatperform-replace
kode menjadi lebih terbuka, sehingga kunci dapat ditambahkan ke peta. Setidaknya harus memiliki klausa mundur yang hanya memanggil cmd yang terikat pada kunci.query-replace-map
sebelumnya.perform-replace
untuk menambahkancond
klausa tambahan yang memanggil kunci yang telah Anda tetapkanquery-replace-map
. Letakkan klausa baru tepat sebelum klausa catch-allt
. Ini adalah klausa baru:(def (call-interactively def))
. Tidak bisa lebih sederhana.(customize-set-variable case-fold-search nil)
memberikan kesalahancustomize-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.