对于上下文,我是一个 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 中收到一条消息,例如“没有最后一个 kbd 宏”或类似的东西)
@Mike Stone - 感谢您提供信息。我尝试像这样创建一个宏:
C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
这创建了我的宏,但是当我执行我的宏时,我没有得到与我通常使用isearch-forward-regexp
. 相反,它只是跳到表达式的下一个匹配项的末尾。所以这并不能满足我的需要。有任何想法吗?
编辑:看起来我可以使用宏来做我想做的事,我只需要跳出isearch-forward-regexp
. 我会尝试你的建议。