当前位置:  开发笔记 > 编程语言 > 正文

如何将正则表达式绑定到emacs中的键组合?

如何解决《如何将正则表达式绑定到emacs中的键组合?》经验,为你挑选了1个好方法。

对于上下文,我是一个emacs新手.我没有使用它很长时间,但已经越来越多地使用它(我非常喜欢它).我也很熟悉lisp,但不熟悉elisp.

我需要做的是将正则表达式绑定到键盘组合,因为我经常使用这个特定的正则表达式.

我一直在做什么:

M-C-s ^.*Table\(\(.*\n\)*?GO\)

注意,我上面使用了换行符,但是我发现isearch-forward-regexp,你真的需要用\n正则表达式替换正则表达式C-q Q-j.这会插入一个文字换行符(不结束命令),这样我就可以在表达式中添加换行符并跨行匹配.

如何将其绑定到组合键?

我隐约明白我需要创建一个isearch-forward-regexp用表达式执行的elisp函数,但我对细节很模糊.我搜索了谷歌,发现大多数文档都有点令人困惑.

如何将正则表达式绑定到emacs中的键组合?


迈克斯通到目前为止得到了最好的答案 - 不完全是我想要的,但它适用于我需要的东西

编辑 - 这种方式有效,但在存储宏之后,当我以后再使用它时,我无法使用它C-x e.(即,如果我重新启动emacs然后键入M-x macro-name,然后C-x e,我在迷你缓冲区中收到一条消息,如'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.我会尝试你的建议.



1> Mike Stone..:

您可以使用宏,C-x (然后执行宏的所有操作,然后C-x )结束宏,然后C-x e执行最后定义的宏.然后,您可以使用M-x name-last-kbd-macro它来命名它,然后您可以为其指定一个名称M-x TESTIT,然后可以调用该名称,然后使用M-x insert-kbd-macro该名称存储定义将宏放入当前缓冲区,然后您可以将其存储在.emacs文件中.

例:

C-x( abc *return* C-x)

将定义一个宏来键入"abc"并按回车键.

C-xeee

立即执行上述宏,3次(首先执行它,然后执行2次e将执行两次以上).

M-x name-last-kbd-macro testit

将宏命名为"testit"

M-x testit

执行刚刚命名的宏(打印"abc"然后返回).

M-x insert-kbd-macro

将以下内容放入当前缓冲区:

(fset 'testit
   [?a ?b ?c return])

然后可以将其保存在您的.emacs文件中,以便在重新启动emacs后反复使用命名宏.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有