我search,找不到任何地方的解决scheme。 我使用Windows中的PuTTY连接到运行bash和屏幕的各种服务器。 看来bash可以很好的使用Ctrl-箭头键在命令行上逐字跳转,但在屏幕内却不起作用。 不是在屏幕上,按住左键发送“^ [OC和CTRL右键是'^ [OD]。在屏幕内我得到”^ [[C“和”^ [[D“,这似乎是代码只是左/右箭头键有没有什么办法让屏幕识别CTRL-箭头键时使用PuTTY?(FYI,我不记得有这个问题,当在Linux中使用gnuterminal而不是腻子)。
更新:它显示腻子是问题,因为它不是发送这个工作所必需的转义码。 我现在放弃使用Cygwin + mintty。
编辑:
以下是对我有用的东西:
~/.bashrc
设置TERM=xterm
(我碰巧是TERM=xterm-256colors
)覆盖屏幕的TERM=screen
tput smkx
现在Ctrl-Arrow键逐字跳转
为了提供信息,如果我这样做:
tput smkx | hexdump -c
我明白了
0000000 033 [ ? 1 h 033 =
和
tput rmkx | hexdump -c
给我
0000000 033 [ ? 1 l 033 >
我认为有一种方法可以将它改写成更好的东西,但这是我迄今为止所看到的,似乎是有效的。
原始答案:
从info screen
:
“屏幕”会话中的每个窗口仿真一个VT100terminal,添加一些额外的function。 VT100仿真器是硬编码的,不能仿真其他terminaltypes。
而VT100s没有Ctrl-Arrow键码。
正如在这里提到的,你可以把〜/ .inputrc:
"\eOD": backward-word "\eOC": forward-word
它为我工作。
我有点惊讶,即使没有使用屏幕,你也可以正确地发送CTRL +箭头键,因为这从来没有为我工作过。 我的解决scheme是切换到使用alt-arrowkeys(meta-arrowkeys),我相信默认情况下在bash中有相同的前向/后向字符绑定,但是我必须为zsh发出几个额外的命令来识别它们:
bindkey“^ [^ [[C”前缀词#Meta-RightArrow bindkey“^ [^ [[D”后缀词#Meta-LeftArrow
如果其他人发现像我这样的老问题,最近的解决scheme:
Ctrl和箭头键不起作用在腻子! 我该怎么办?
putty在ctrl上反转了光标键模式的感觉,这对tmux来说是很难被正确检测的。 要正确获取CTRL键,请更改terminfo设置,以便kUP5(Ctrl-Up等)为已调整的版本,并禁用smkx / rmkx,以便tmux不会更改模式。 例如,使用.tmux.conf中的这行(假设你将TERM设置为xterm):
设置-gterminal覆盖“xterm *:kLFT5 = \ eOD:kRIT5 = \ eOC:kUP5 = \ eOA:kDN5 = \ eOB:smkx @:rmkx @”
请注意,这只会在tmux 1.2及以上版本中工作。
http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ
如果你想正确debugging/configuration你应该看看terminfo,ncurses,screen和putty的文档。 也可以使用inputrcconfigurationbash快捷键。 查看bash的man页面并searchinputrc。
你在Putty中有正确的字符编码吗? 如果你用UTF-8连接到服务器,并且你的putty是标准字符集,那么在vim中,箭头键就会被写入。 如果腻子使用UTF-8,则可以移动光标。 也许在你的情况是一样的…
在Terminal – > Features下的puttyconfiguration中,有一些“禁用”checkbox。 您可能要尝试禁用应用程序光标键或应用程序键盘模式 – 有时腻子会尝试“太聪明”,并发送与服务器不兼容的控制字符。