问题 Emacs区分大小写替换字符串


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

在我的 .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 必然会出现区分大小写的情况 search-forward 不区分大小写,因为它是默认情况下。

也许我需要设定 case-fold-search 至 nil 只是为了 replace-string 命令,但我不知道该怎么做。


7500
2018-03-17 22:35


起源



答案:


把它放在你的.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参考手册


10
2018-03-17 22:46





试试这个方法,不需要建议:

(global-set-key (kbd "C-r") 
    (lambda () 
      (interactive) 
      (let ((case-fold-search nil)) 
        (call-interactively 'replace-string))))

6
2018-03-17 23:13