Answers:
(customize-set-variable case-fold-search nil)
或在您自己的命令中绑定该变量(选项),否则该命令只是一个包装器query-replace。这样做的好处是,在查询替换之外,它不会更改一般使用的变量值。
另请参见variable case-replace,它控制替换文本的大小写。
另请参见C-h f query-replace,其内容如下:
如果
case-fold-search为非nil并且FROM-STRING没有大写字母,则匹配与大小写无关。如果case-replace和case-fold-search不为nil并且FROM-STRING没有大写,替换将旧文本的大小写模式转移到新文本
另请参阅下面的注释以及Emacs错误#20687,其中显示了如何修补,perform-replace以便在期间切换大小写折叠query-replace。
也请注意,现有的perform-replace绑定代码以case-fold-search这种方式绑定(请注意其依赖的变量):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-search像我们在isearch使用M-c绑定期间所做的那样,随时进行更改将是一件很不错的事情。但是不幸的query-replace是确实有它的模式图。
query-replace-map:(defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))和会很简单(define-key query-replace-map "C" 'toggle-case)。但是该映射中的键处理是用硬编码的perform-replace。您可能想要M-x report-emacs-bug,使perform-replace代码更加开放,因此可以将键添加到地图。它至少应该具有一个fallback子句,该子句仅调用绑定到密钥的cmd。
query-replace-map。
(customize-set-variable case-fold-search nil)给出错误customize-set-variable: Attempt to set a constant symbol: nil。我也尝试了两者(setq case-fold-search nil),(setq case-replace nil)但查询仍然匹配大写的V。–