你怎么告诉Emacs在搜索和替换字符串中单独留下案例?

Mal*_*ous 12 emacs replace case-sensitive

我正在尝试执行正则表达式搜索并替换Emacs(使用M-x query-replace-regexp),但通常有用的智能案例正在阻碍.我的来源是:

One
Two
Three
Run Code Online (Sandbox Code Playgroud)

我想用相似的东西替换每一行<item name="One"/>.不幸的是,每一行开头的资本都被误解了,我得到<Item>了一个我不想要的大写字母.

我可以找到有关如何使搜索大小写敏感的示例,以及如何\1在替换字符串中保留小写,但没有关于如何保持整个替换字符串大小写 - 未修改.

Tre*_*son 7

尝试将此添加到.emacs:

(setq case-replace nil)
Run Code Online (Sandbox Code Playgroud)

C-h v case-replace RET:

文档:非零意味着`query-replace'应该保留替换中的大小写.

指向" 替换命令和案例 "手册的链接详细说明了与案例和适当变量的所有交互.

或者您可以定义一个新命令,如:

(defun query-replace-no-case ()
   (interactive)
   (let ((case-replace nil))
       (call-interactively 'query-replace))))
Run Code Online (Sandbox Code Playgroud)

并且,如果您在函数中对此进行编码,并且只想暂时设置变量,那么您可以执行以下操作:

(let ((case-replace nil))
   (while (search-forward ...)
       (replace-match ...)))
Run Code Online (Sandbox Code Playgroud)

  • 对于一次性,放入你的`.emacs`几乎没有意义. (2认同)