我刚问了一个相关的问题(setq question),但它有明显的不同,所以我决定分开这个问题。
在我的.emacs
文件中,我定义了对replace-string
命令的键绑定:
(define-key global-map "\C-r" 'replace-string)
replace-string
执行基本搜索和替换。假设搜索字符串的第一个字母是小写的,如果case-fold-search
是nil
,那么replace-string
会进行区分大小写的搜索,否则会进行不区分大小写的搜索。
问题是case-fold-search
控制“搜索”(如search-forward
命令)和“搜索和替换”(如replace-string
命令)的“区分大小写”
问题是如何使replace-string
命令(或任何C-r
绑定的 JUST 区分大小写),留下search-forward
个案例 - 默认情况下不敏感。
也许我需要将case-fold-search
设置为nil
仅用于replace-string
命令,但我不知道该怎么做。
答案 0 :(得分:10)
将它放在.emacs中:
(defadvice replace-string (around turn-off-case-fold-search)
(let ((case-fold-search nil))
ad-do-it))
(ad-activate 'replace-string)
这正是您所说的,仅为case-fold-search
将nil
设置为replace-string
。
事实上,这几乎就是Emacs Lisp reference manual中的例子。
答案 1 :(得分:6)
尝试此方法,不需要建议:
(global-set-key (kbd "C-r")
(lambda ()
(interactive)
(let ((case-fold-search nil))
(call-interactively 'replace-string))))