Emacs区分大小写替换字符串

时间:2011-03-17 22:35:17

标签: emacs replace case-sensitive dot-emacs

我刚问了一个相关的问题(setq question),但它有明显的不同,所以我决定分开这个问题。

在我的.emacs文件中,我定义了对replace-string命令的键绑定:

(define-key global-map "\C-r" 'replace-string)

replace-string执行基本搜索和替换。假设搜索字符串的第一个字母是小写的,如果case-fold-searchnil,那么replace-string会进行区分大小写的搜索,否则会进行不区分大小写的搜索。

问题是case-fold-search控制“搜索”(如search-forward命令)和“搜索和替换”(如replace-string命令)的“区分大小写”

问题是如何使replace-string命令(或任何C-r绑定的 JUST 区分大小写),留下search-forward个案例 - 默认情况下不敏感。

也许我需要将case-fold-search设置为nil仅用于replace-string命令,但我不知道该怎么做。

2 个答案:

答案 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-searchnil设置为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))))