如何替换一个字而不是像这样的emacs中的字符串?

问题描述:

例如,我有下面的代码:如何替换一个字而不是像这样的emacs中的字符串?

(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)))) 

,现在我想用is-lighted替代变量名a重构该块,但没有换句话说改变其它字符a(例如,在interactivetab)。

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

C-ùM-%aRETis-lightedRET

前缀参数( “分隔”)切换到标准的查询 - 替换功能包与字边界标记的图案。

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