emacs键绑定命令影响另一个

时间:2014-10-25 13:19:11

标签: emacs

以前我使用C-SPCactivate/deactivate mark,现在我使用expand-region包并将密钥绑定设置为C-@,如下所示:

(global-set-key (kbd "C-@") 'er/expand-region)

但这也影响了C-SPC键绑定,因此它也绑定到expand-region

我需要C-@绑定到expand-regionC-SPC以绑定到旧activate/deactivate mark

2 个答案:

答案 0 :(得分:1)

建议您参考:

set-mark-command not working emacs with C-SPC

https://www.gnu.org/software/emacs/manual/html_node/emacs/Setting-Mark.html

引用后者:

“脚注[1] ASCII中没有C-< SPC>字符;通常,在文本终端上键入C-< SPC>给出字符C- @。此键也绑定到set-mark-command,所以,除非你不幸的是有一个行为不同的文本终端,你可能会认为C- @为C-< SPC>。“

我想你会发现它们不是单独的键; C-SPC发送的代码与C-@相同。我认为这意味着你必须找到其他地方来绑定其中一个函数,(即使你必须覆盖扩展区域)

答案 1 :(得分:0)

为第二个答案道歉...我认为第一个答案是错误的,因为我现在已经能够为C-SPC和C- @做出单独的定义,如下所述。

这可以分别定义C- @和C-SPC:

(global-set-key [?\ C- @]'行首) (global-set-key(kbd" C-SPC")' end-of-line)

为了表示赞赏,我从这里得到了答案:Rebind C-space in Emacs 谷歌搜索" emacs控制空间"

(关于你的问题,"我应该将这个扩展区域绑定到哪个键?",我通常使用Ch Ck并输入一些我认为不会使用的密钥。然后看看默认情况下该键绑定的功能。如果它对我有用,我会尝试另一个键并继续查看。如果我觉得我永远不会使用默认定义,我会根据自己的目的重新定义它。)