Emacs没有使用这个键序列?

时间:2015-04-16 17:22:15

标签: emacs key-bindings mintty

我试图将backward-kill-line绑定到Ctrl-Backspace。以下结合工作:

(global-set-key (kbd "C-\d") 'backward-kill-line) ; emacs-w32
(global-set-key (kbd "\b") 'backward-kill-line) ; xterm

但是,当我从Windows登录ssh时,我通常会使用Mintty。 Bash报告的Ctrl-v序列是' \ 037'但是emacs并没有认识到这一点。相反,每当我在Mintty术语上运行emacs时按Ctrl-Backspace,以下字符将被发送到缓冲区:&#39 ;; 5u'。

有没有办法告诉emacs使用&#39 ;; 5u'作为键绑定?指定(kbd&#34 ;; 5u")不会起作用,因为emacs需要单个字符。

1 个答案:

答案 0 :(得分:0)

让Emacs为您提供帮助,输入C-h kC-v,当Ctrl + numPlus执行此操作时,Emacs会显示xterm的内容:

M-O 5 k is undefined

我将其翻译成

 (global-set-key (kbd "M-O 5 k") 'end-of-line)

并且工作正常!

更新使用我的expect脚本从按下组合键时获得的终端获取字节序列:http://sourceforge.net/u/gavenkoa/utils/ci/default/tree/misc/keyseq.exp

如果您使用mintty,我会检查文档:https://code.google.com/p/mintty/wiki/Tips,您的密钥代码序列与其他示例非常相似,所以我相信:

 (global-set-key (kbd "\e[1;5u") 'end-of-line)

为你工作。

检查(info "(elisp)Reading Input)

中的主题

更新2 您已陷入终端的Ctrl+Backspace问题,请自行调查信息:https://www.google.com.ua/search?q=ctrl+backspace+terminal

我记得几年前我有同样的问题。 Ctrl+Backspace在终端仿真器中生成与Ctrl-H相同的字节序列的主要问题。出于这个原因,我训练使用ESC Backspace向后删除单词。我从未深入研究终端仿真标准和实现代码,以了解是否有可能在mintty中为C-Backspace生成不同的代码序列((