我尝试将热键定义为以下
(global-set-key [(control shift up)] 'other-window)
但它不起作用(没有错误,只是不起作用),也不起作用
(global-set-key [(control shift down)] 'other-window)
但是
(global-set-key [(control shift right)] 'other-window)
和
(global-set-key [(control shift left)] 'other-window)
工作!
但是因为emacs使用了最后两个键组合(默认情况下),所以我不想为其他功能更改它们。
那我怎么能让 control-shift-up 和 control-shift-down 工作?
我用google搜索“(控制升档)”,似乎 control-shift-up 被其他人使用,(但结果不是很少)。
答案 0 :(得分:6)
原因不是Emacs问题,而是因为您的终端无法为C-S-up生成密钥序列。
您可以非常轻松地验证这一点。打开终端,然后键入:
Control-v Control-Shift-right
Control-v部分将使下一个键的控制序列逐字插入到shell中。在我们的例子中,它将向右移动Control-Shift的序列,并且看起来像这样:
^[[1;6C
现在,为C-S-up尝试相同的事情:
Control-v Control-Shift-up
你会看到没有输入控制序列,这暗示当你在Emacs中按CS-up时它实际上永远不会收到任何东西,因为终端无法产生任何东西传递给Emacs
如果您刚开始新emacs -nw
并输入C-h k
来调用Emacs'describe-key
功能,我们可以对此进行双重验证。您将在迷你缓冲区中被要求键入一个键以查看它绑定的功能。如果您现在键入C-S-up没有任何反应 - 当然不会,因为运行Emacs的终端不会产生任何结果。
但是,如果您只是在寻找一个未使用的按键组合,那么在没有控制的情况下,只需向上移动(甚至向右移动)怎么样?那个应该在终端emacs和窗口版本中都可以工作。
答案 1 :(得分:4)
最后,在superuser.com的grawity的帮助下,我得到了它的工作。请这个帖子
https://superuser.com/questions/230852/get-ubuntu-terminal-to-send-an-escape-sequence-controlshiftup
答案 2 :(得分:0)
这很可能与以下内容重复:
Binding M-<up> / M-<down> in emacs 23.1.1
如果是这种情况,吉尔斯的答案应该让你感到厌烦(不过,无疑会有不同的逃脱序列。)
编辑(为了更好的可见性 - 请参阅下面的answer):
事实证明,gnome终端不会传输这些密钥组合,因此解决方案依赖于以下内容:https://superuser.com/questions/230852/get-ubuntu-terminal-to-send-an-escape-sequence-controlshiftup