emacs - [控制升档]不起作用

use*_*739 2 emacs emacs23 gnome-terminal

我尝试将热键定义如下

(global-set-key [(control shift up)] 'other-window)
Run Code Online (Sandbox Code Playgroud)

但它不起作用(没有错误,只是不起作用),也没有

(global-set-key [(control shift down)] 'other-window)
Run Code Online (Sandbox Code Playgroud)

(global-set-key [(control shift right)] 'other-window) 
Run Code Online (Sandbox Code Playgroud)

(global-set-key [(control shift left)] 'other-window)
Run Code Online (Sandbox Code Playgroud)

工作!

但是因为emacs使用了最后两个键组合(默认情况下),所以我不想为其他功能更改它们.

那我怎么能做control-shift-upcontrol-shift-down工作?

我用谷歌搜索"(控制升档)",它似乎control-shift-up被其他人使用,(但结果不是很少).

Tho*_*mas 6

其原因不是Emacs问题,而是因为您的终端无法为CS-up生成密钥序列.

您可以非常轻松地验证这一点.打开终端然后键入:

Control-v Control-Shift-right
Run Code Online (Sandbox Code Playgroud)

Control-v部分将使下一个键的控制序列逐字插入到shell中.在我们的例子中,它将向右移动Control-Shift的序列,并且看起来像这样:

^[[1;6C
Run Code Online (Sandbox Code Playgroud)

现在,为CS-up尝试相同的事情:

Control-v Control-Shift-up
Run Code Online (Sandbox Code Playgroud)

您将看到没有输入控制序列,这暗示了当您在Emacs中按CS-up时,它实际上永远不会收到任何内容,因为终端无法生成任何内容以传递给Emacs.

如果您只是启动一个新的emacs -nw并且键入C-h k以调用Emacs的describe-key功能,我们可以对此进行双重验证.您将在迷你缓冲区中被要求键入一个键以查看它绑定的功能.如果您现在键入CS-up没有任何反应 - 当然不会,因为您的Emacs运行的终端不会产生任何结果.

但是,如果您只是在寻找一个未使用的按键组合,那么在没有控制的情况下,只需按住Shift-up(甚至Shift-right)呢?那个应该在终端emacs和窗口版本中都有效.

  • 谢谢.但是仍然想知道是否有办法让我的终端产生CS-up的关键序列. (4认同)