我在终端的Emacs中询问了一个关于Ctrl-arrow键绑定的问题:
Emacs Ctrl modifiers don't work in console
有人告诉我,Linux终端模拟器不会处理这种组合。我设法为loadkeys
命令创建了一个文件来处理这些键:
control keycode 105 = F100
string F100 = "\033[[left"
control keycode 106 = F101
string F101 = "\033[[right"
然后从root加载它:
#loadkeys ./funcskeys
之后每次在控制台中单击Ctrl-right或Ctrl-left时,我都会打印“右”或“左”。现在我需要在Emacs中处理它。据我所知,这个问题:
Binding M-<up> / M-<down> in Emacs 23.1.1
必须使用input-decode-map
函数完成。但我无法使其发挥作用。 Plz,帮助。
答案 0 :(得分:6)
更改你的&#34; funcskeys&#34;稍微提交以生成以下转义序列:
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 +左 / ALT +右工作,或涉及 CTRL 性格。