如何绑定按键Tab和ShiftTab屏幕?我的问题是我不知道将什么传递给屏幕bind
命令来指定这些击键。
顺便说一句,我知道GNU 屏幕:在区域之间移动但答案并不存在。
以下所有操作均失败并出现错误-X: bind: character, ^x, or (octal) \032 expected
:
screen -X bind "\033[Z" focus up
screen -X bind "^[[Z" focus up
screen -X bind "\t" focus up
screen -X bind \033[Z focus up
screen -X bind ^[[Z focus up
screen -X bind \t focus up
如果我点击CtrlA:输入命令,也会发生同样的情况。
答案1
bindkey
与使用 指定字符序列相反,bind
唯一的方法是使用bind -k CAP
CAP 是termcap
关键功能的地方。
例如,
bind -k ku focus up
Up用于绑定发送到的字符序列focus up
。对于后台选项卡,应该是:
bind -k kB focus up
不幸的是,由于某种原因,它看起来不起作用。不知道为什么。我的第一个解释是错误的。听起来这与ncurses
未正确处理 termcap 等价物有关kcbt
:
$ infocmp -1 | grep Z
cbt=\E[Z,
kcbt=\E[Z,
$ infocmp -1C | grep Z
:bt=\E[Z:\
(kcbt 未翻译为 kB)。
如果我添加到我的~/.screenrc
:
termcapinfo * kr=\E[Z
bind -k kr focus up
也就是说,如果我告诉screen
你,无论主持人终端 ( *
)、F63( kr
) 发送\E[Z
,并绑定F63到focus up
,然后就可以了。但请注意,按Shift+Tabnow 会发送屏幕内 \EOC
,这是终端仿真器显示的字符序列屏幕实现(与主机终端相对)发送F63。
答案2
bindkey -k kB stuff ^[OZ
bind -k kB focus up
Ctrl就我而言,问题是当我按+ A- Shift+时插入的字符串Tab位于+^[[Z
之后,翻译为CtrlA
^[
进入复制/回滚模式[
中止- 然后显示
Z
即标准 VT100 样式转义字符序列与复制/回滚模式字符序列发生冲突。因此,我为 backtab termcap 名称添加了一个键绑定,以更改按+kB
时插入输入缓冲区中的字符串。ShiftTab^[OB
请参阅屏幕手册页中的“输入翻译”部分。