如何在像这样的emacs中替换单词而不是字符串?

时间:2012-08-08 20:08:01

标签: emacs elisp

例如,我有以下代码:

(defun toggle-light ()
    "Toggle setting tab widths between 4 and 8"
    (setq a
      (if (boundp 'a) a nil))
    (interactive)
    (if a
    (progn
      (load-theme 'solarized-dark t)
      (setq a nil))
      (progn
    (load-theme 'solarized-light t)
    (setq a t) )))

现在我想通过用a替换变量名is-lighted来重构这些块,但换句话说不改变其他字符a(例如,在{{1}中) }或interactive)。

emacs中是否有可以完成这项工作的内置功能?

2 个答案:

答案 0 :(得分:6)

Cu M - % a RET is-lighted RET

标准查询替换函数的前缀参数(“分隔符号”)使用字边界标记包装模式。

答案 1 :(得分:1)

虽然phils's answer是正确且惯用的,但您还应该了解\b字边界正则表达式。因此,等效的regexp替换将是 M - % \ba\b。请参阅Backslash in Regular Expressions @ Emacs ManualRegular Expression @ EmacsWiki