2011-03-17 67 views
11

我剛剛問了一個相關的問題(setq question),但它明顯不同,所以我決定用這個問題來分支。Emacs大小寫敏感替換字符串

在我.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命令)的「區分大小寫」。

的問題是如何使JUSTreplace-string命令(或任何C-r必將)區分大小寫,留下search-forward不區分大小寫的,因爲它是在默認情況下。

也許我需要設置case-fold-searchnil只爲replace-string命令,但我不知道該怎麼做。

回答

10

把這個在你的.emacs:

(defadvice replace-string (around turn-off-case-fold-search) 
    (let ((case-fold-search nil)) 
    ad-do-it)) 

(ad-activate 'replace-string) 

這不你說什麼,只是replace-string設置case-fold-searchnil

實際上,這幾乎就是Emacs Lisp reference manual中的示例。

6

試試這個方法,它不需要建議:

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