3

我问了一个关于终端 Emacs 中的 Ctrl-箭头键绑定的问题:

Emacs Ctrl 修饰符在控制台中不起作用

并且被告知,Linux 终端仿真器不处理这种组合。我设法为loadkeys命令创建了一个文件,该文件处理这些键:

control keycode 105 = F100
string F100 = "\033[[left"
control keycode 106 = F101
string F101 = "\033[[right"

然后从根加载它:

#loadkeys ./funcskeys

之后,每次我在控制台中单击 Ctrl-right 或 Ctrl-left 时,都会打印出“right”或“left”。现在我需要在 Emacs 中处理它。据我从这个问题了解到:

在 Emacs 23.1.1 中绑定 M-<up> / M-<down>

必须使用input-decode-map函数来完成。但我无法让它工作。请帮忙。

4

1 回答 1

6

稍微更改您的“funcskeys”文件以生成以下转义序列:

control keycode 105 = F100
string F100 = "\033[1;5D"
control keycode 106 = F101
string F101 = "\033[1;5C"

然后将以下行添加到您的.emacs文件中:

(define-key input-decode-map "\e[1;5C" [(control right)])
(define-key input-decode-map "\e[1;5D" [(control left)])

运行loadkeys并重新启动 Emacs 后,CTRL+left应该CTRL+right可以工作。您可以通过键入以下内容来验证这一点:

C-h k C-right

C-h k C-left

要将这些击键实际绑定到命令,例如forward-word,您可能还必须将以下行添加到.emacs文件中:

(global-set-key [(control right)] 'forward-word)
(global-set-key [(control left)] 'backward-word)

CTRL+left请注意,整个方法仅专门使组合键CTRL+right起作用。例如,它不会使ALT+left/ALT+right工作,或任何其他涉及CTRL角色的组合键。

于 2012-11-06T13:35:34.283 回答