我想全局更改Emacs中密钥的常用绑定。例如, Return 默认运行命令newline
,我希望它能运行electric-newline-and-maybe-indent
。我目前正在执行
(local-set-key [return] 'electric-newline-and-maybe-indent)
通过find-file-hooks
功能。不幸的是,这打破了一些模式,例如po-mode
,其中 Return 具有特殊含义。我想知道一些干净的方法来进行重新绑定,以便不会影响这种特殊含义。特别是,我不想列出具体的模式,因为我可能事先不知道它们。
我认为在这个例子中,仅当绑定到 Return 的初始命令为newline
时才进行重新绑定可能是一个解决方案。但是怎么做呢?或者有更好的解决方案吗?
答案 0 :(得分:3)
简单地:
(global-set-key [return] 'electric-newline-and-maybe-indent)
所有想要覆盖 RET 的次要模式仍然可以。
好的,我想我在这里看到了问题:
(global-set-key (kbd "RET") 'electric-newline-and-maybe-indent)
不确定[return]
是否有,因为我总是使用kbd
。只是不要使用[return]
。
答案 1 :(得分:1)
我终于找到了一个解决方案,这似乎适用于我提到的所有情况(不影响po-mode
):
(substitute-key-definition 'newline 'electric-newline-and-maybe-indent global-map)
我通过阅读subr.el
文件找到了它。
但是,根据文档,如果将不同的键绑定到newline
,这可能会产生不必要的副作用,因为所有键都会受到重新绑定的影响。否则,稍后可能会覆盖某些绑定。