为了更好的理解背景,我是一位Emacs新手。虽然使用不长时间,但越来越多地开始使用它(我非常喜欢)。此外,我对Lisp很熟悉,但对Elisp并不是很了解。
我的需求是将一个常用的正则表达式绑定到键盘组合键上。
目前我一直在做的:
M-C-s ^.*Table\(\(.*\n\)*?GO\)
注意,我在上面使用了换行,但我发现对于
isearch-forward-regexp
,你需要将正则表达式中的 \n
替换为 C-q Q-j 的结果。这将插入一个字面换行符(而不是结束命令),使我可以在表达式中输入换行符并跨越多行匹配。如何将其绑定到键组合?我模糊地理解我需要创建一个执行带有该表达式的
isearch-forward-regexp
的Elisp函数,但我对细节还不太清楚。我搜索了谷歌并发现大部分文档有点混乱。如何在Emacs中将正则表达式绑定到键组合?
迄今为止,Mike Stone的回答是最好的答案-虽然不完全是我要找的,但它可以满足我的需求
编辑-这种方式有点问题,因为在存储宏后,当我回来再次使用它时,我无法使用 C-x e。(即,如果我重新启动emacs,然后键入 M-x macro-name ,然后 C-x e ,我会在minibuffer中得到一个类似“no last kbd macro”或类似的消息)
@ Mike Stone - 感谢您提供的信息。我尝试创建如下的宏:
C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
这是我创建的宏,但当我执行宏时,没有像平常使用
isearch-forward-regexp
时那样高亮显示。相反,它只是跳到表达式下一个匹配项的末尾。所以这对我所需的并不起作用。有什么想法吗?编辑:看起来我可以使用宏来实现我想要的功能,我只需要跳出
isearch-forward-regexp
的思维定势。我会尝试你建议的方法。