Emacs宏:检查是否为函数名
我想这样写宏Emacs宏:检查是否为函数名,emacs,macros,Emacs,Macros,我想这样写宏 A_ret A_function_name (A_param ap) { A_sentence; } 在emacs中执行完宏后,如果在函数名上,则将A更改为B A_ret B_function_name (A_param ap) { A_sentence; } 如何检查宏定义中函数名上的“A”?无法编写以当前符号为条件的键盘宏。您可以键入C-x q暂停键盘宏,并让Emacs询问您是否继续(Y或N) 如果您试图替换大量函数名,我会使用C-M-%(M-x query repla
A_ret A_function_name (A_param ap)
{
A_sentence;
}
在emacs中执行完宏后,如果在函数名上,则将A更改为B
A_ret B_function_name (A_param ap)
{
A_sentence;
}
如何检查宏定义中函数名上的“A”?无法编写以当前符号为条件的键盘宏。您可以键入
C-x q
暂停键盘宏,并让Emacs询问您是否继续(Y
或N
)
如果您试图替换大量函数名,我会使用C-M-%
(M-x query replace regexp
)进行搜索并替换为正则表达式,或者如果这太复杂,则使用M-so
(M-x occurrent
)和键盘宏来查找a_\(\s|u\\ sw\)+(
(\sw
是单词字符,\s\u
是符号字符,包括下划线\u
)
要对键盘宏使用occure
,我需要
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-xq
。相反,我将使用C-xe
来执行,如果我想不执行而跳到下一个匹配,则使用“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]
但那是我。不可能编写以当前符号为条件的键盘宏。您可以键入
C-x q
暂停键盘宏,并让Emacs询问您是否继续(Y
或N
)
如果您试图替换大量函数名,我会使用C-M-%
(M-x query replace regexp
)进行搜索并替换为正则表达式,或者如果这太复杂,则使用M-so
(M-x occurrent
)和键盘宏来查找a_\(\s|u\\ sw\)+(
(\sw
是单词字符,\s\u
是符号字符,包括下划线\u
)
要对键盘宏使用occure
,我需要
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-xq
。相反,我将使用C-xe
来执行,如果我想不执行而跳到下一个匹配,则使用“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]
但那就是我。我不知道你在问什么。首先,你用什么来实现你的“宏”?(注意,这不是emacs的好术语,emacs同时提供lisp宏和键盘宏,据我所知,这两个宏都不是你所指的)。其次,你的意思是什么“在emacs中执行宏之后,如果它在函数名上,则将A更改为B”?我不理解这句话。“执行宏”在本文中的实际含义是什么?具体是什么?我不知道您在问什么。首先,您使用什么来实现“宏”?(注意,对于emacs来说,这不是一个好的术语,它同时提供lisp宏和键盘宏,据我所知,两者都不是你所指的)。其次,“在emacs中执行宏之后,如果在函数名上,将A改为b”是什么意思?我不理解这个句子。“执行宏”是什么意思“它”在这个上下文中实际上是什么意思?它具体是什么?