Emacs:除非键具有特殊含义,否则全局键重新绑定
Emacs: global key rebinding unless the key has a special meaning
我想全局更改 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
时才重新绑定可能是一个解决方案。但如何做到这一点?或者有更好的解决方案吗?
简单:
(global-set-key [return] 'electric-newline-and-maybe-indent)
所有想要覆盖 RET 的次要模式仍然可以做到。
更新
好的,我想我在这里看到了问题:
(global-set-key (kbd "RET") 'electric-newline-and-maybe-indent)
不确定 [return]
是否有效,因为我总是使用 kbd
。只是不要使用 [return]
.
我终于找到了一个解决方案,它似乎适用于我提到的所有情况(不影响 po-mode
):
(substitute-key-definition 'newline 'electric-newline-and-maybe-indent global-map)
我是通过阅读 subr.el
文件找到的。
但是,根据文档,如果将不同的键绑定到 newline
,这可能会产生不需要的副作用,因为所有键都会受到重新绑定的影响。否则某些绑定稍后可能会被覆盖。
我想全局更改 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
时才重新绑定可能是一个解决方案。但如何做到这一点?或者有更好的解决方案吗?
简单:
(global-set-key [return] 'electric-newline-and-maybe-indent)
所有想要覆盖 RET 的次要模式仍然可以做到。
更新
好的,我想我在这里看到了问题:
(global-set-key (kbd "RET") 'electric-newline-and-maybe-indent)
不确定 [return]
是否有效,因为我总是使用 kbd
。只是不要使用 [return]
.
我终于找到了一个解决方案,它似乎适用于我提到的所有情况(不影响 po-mode
):
(substitute-key-definition 'newline 'electric-newline-and-maybe-indent global-map)
我是通过阅读 subr.el
文件找到的。
但是,根据文档,如果将不同的键绑定到 newline
,这可能会产生不需要的副作用,因为所有键都会受到重新绑定的影响。否则某些绑定稍后可能会被覆盖。