我想写这样的宏。
A_ret A_function_name (A_param ap)
{
A_sentence;
}
在emacs中执行宏后,如果它在函数名称上,则将A更改为B.
A_ret B_function_name (A_param ap)
{
A_sentence;
}
如何在宏定义中检查'A'是否在函数名称上?
答案 0 :(得分:0)
无法编写以当前符号为条件的键盘宏。您可以键入C-x q
暂停键盘宏,让Emacs询问您是否继续(Y
或N
)。
如果您尝试更换了很多功能名称,我会使用C-M-%
(M-x query-replace-regexp
)进行搜索并替换为正则表达式,或者如果是复杂,然后使用M-s o
(M-x occur
)键盘宏查找A_\(\s_\|\sw\)+ (
的所有匹配项(\sw
是单词字符,\s_
是符号字符,包括下划线_
)。
要将occur
与键盘宏一起使用,我会
M-s o A_\(\s_\|\sw\)+ RET [occur]
RET [exit-minibuffer]
C-x ( [kmacro-start-macro]
C-x ` [next-error]
C-x [kbd-macro-query]
M-d [kill-word]
B_ [self-insert-command]
C-x ) [kmacro-end-query]
C-x e [kmacro-call-query]
C-x e [kmacro-call-query]
C-x e [kmacro-call-query]
...
说实话,我不会使用C-x q
。相反,我将使用C-x e
执行,并且``C-x```如果我想跳到下一个匹配而不执行。
M-s o A_\(\s_\|\sw\)+ RET [occur]
C-x ` [next-error]
C-x ( [kmacro-start-macro]
M-d [kill-word]
B_ [self-insert-command]
C-x e [kmacro-call-query]
C-x e [kmacro-call-query]
...
C-x ` [next-error]
但那就是我。