我iTerm2
在 Mac 上使用,并自定义了control+←和control+→来发送十六进制0x01
,0x05
按下时 - 这使光标在键入或编辑命令时跳转到行的开头和结尾(而不是一次一个单词) - 并且该alt键加上一个箭头使光标一次移动一个单词。
当使用 SSH 时,这在远程 Linux 系统上工作得很好,直到我启动屏幕会话。 +仍然可以正常工作,但是当我尝试使用+时control,我只是在状态区域中收到一条消息:→control←screen
No other window.
我发现文档建议将这些行添加到/etc/screenrc
或~/.screenrc
将键绑定到下一个和上一个窗口:
bindkey "^[[5D" prev
bindkey "^[[5C" next
我认为解除绑定的语法是使用这一行而不使用命令:
bindkey "^[[5D"
bindkey "^[[5C"
我也尝试过如下:
bindkey "^[[01"
bindkey "^[[05"
这些东西似乎都不起作用。
/etc/screenrc
完全不变Ubuntu 16.04
,目前没有~/.screenrc
文件(即没有非标准干扰)
我如何解除绑定或进一步调试它以找出挂起的位置?
答案1
代码0x01
是 Control-A,它是屏幕中的默认命令字符,因此当您执行control+←两次时,您将获得默认的操作绑定其他,即其他窗口,因此出现该消息。
您可以更改为不同的命令字符,例如启动屏幕时的 Control-b:
screen -e^Bb
或者你可以输入你的~/.screenrc
行
escape ^Bb
答案2
您已设置Ctrl+Left来发送字符 ^A (Ctrl+A)。这与Ctrl+发送的字符相同A,^A 是 Screen 按键绑定的默认前缀字符。
bindkey "^[[5D" prev
由于两个原因,屏幕配置中的内容毫无用处。首先,这定义了当 Screen 收到此转义序列时会发生什么在前缀字符之后,即在 ^A 之后。其次,^[[5D
是某些终端发送Ctrl+的内容Left,但您已重新配置终端以发送不同的内容 (^A)。
不要发送Ctrl+ Left^A,而是发送^[[1~
or ^[OH
(其中^[
是转义字符)。同样 make Ctrl+ Rightsend^[4~
或^[OF
代替 ^E。这些是通常由Home和End键发送的转义序列。