当我在 Windows 7 上使用 PuTTY 0.62 连接到 Debian Wheezy Beta 4 服务器时,我遇到了一个问题。我的登录 shell 是 Zsh,它配置为处理ALT+DEL操作delete-word
(删除光标右侧的一个单词)。配置中的行如下所示:
bindkey -e "\e[3;3~" kill-word
ssh
当通过a 中的命令连接时,绑定工作得很好gnome-terminal
。但是当我通过 PuTTY 连接时,不会执行此操作。相反, a[3~
被输出到控制台。据我所知,这是DEL中键的未转义序列xterm
。有一段时间我以为 PuTTY 会简单地忽略ALT修饰符并仅发送DEL,但如果是这样的话,绑定到 的操作DEL就会像我只按下该键一样被执行。
所以我猜 PuTTY 正在使用一些我不知道的组合键序列,这使得输出[3~
出现在屏幕上。我如何找出 PuTTY 发送的哪个序列来配置 Zsh 以正确处理该问题?
更新:似乎 PuTTYALT在其当前实现中应该忽略所有修饰键击键。以下是从源代码文件中摘录的TERMINAL.C
,它ALT从修饰符变量中删除了该标志:
/*
* Alt is only used for Alt+keypad, which isn't supported yet, so
* ignore it.
*/
modifiers &= ~PKM_ALT;
这并没有向我解释为什么按ALT+DEL不会产生与按 相同的效果。此外,它也没有解释为什么Zsh 中操作DEL的默认组合键( + ) 可以正常工作。kill-word
ALTD
答案1
获取这些序列的一个简单技巧是cat
在远程主机上启动。这样我就可以单独获得^[[3~
,DEL但^[^[[3~
使用ALT+ DEL。(W7/64 上的 PuTTY 0.62)
因此,可能
bindkey -e "\e\e[3~" kill-word
会做你想做的事。