作为Stack Exchange上的长期潜伏者,我已经找到了大部分问题的答案,而无需做很多事情。但是今天我完全被这个问题困扰了,所以我正在寻求帮助。
我最近发现了Byobu,它是Tmux的前端,它使用Fn键执行常见任务。通过SSH从我必须在工作中使用的Windows PC到远程linux服务器的多任务处理真是一件好事。
当前,我正在通过SSH隧道使用gnome-terminal,因为PuTTY和MinTTY(Cygwin的默认终端)似乎都为功能键发送了错误的键代码。
我想知道是否有一种方法可以重新映射某些转义码,以便我的至少一个基于Windows的终端可以与Tmux一起正常使用。(我想我可以只学习Ctrl + b / Ctrl + a组合键,但是执行组合键然后再组合另一个键并不能使我真正符合人体工程学。)
在PuTTY中,将“终端”>“键盘”>“功能键和键盘”设置为“ XtermR6”似乎可以正常按Fn键的正确转义序列,但是Shift和Ctrl修饰符已损坏。我可以使用vim找出每个终端正在发送什么代码。同时,我想我可能已经在源代码中查找了tmux所寻找的组合,但是我不确定:
Key Tmux Expects Gnome-Terminal PuTTY MinTTY
Normal F3: ^[0R ^[0R ^[0R
Ctrl+F3 "\033[13^" ^[01;5R ^[0R ^[[1;5R
Shift+F3 "\033[13$" ^[01;2R ^[[25~ ^[[1;2R
Ctrl+Shift+F3 "\033[13@" ^[01;6R ^[[25~ ^[[1;6R
到目前为止,MinTTY看起来是最好的候选人,但它给我带来了一个完全不同的问题,即byobu忽略了95%的Fn按键,将它们直接传递给客户端应用程序。我可以运行cat -v并向垃圾邮件发送F2(新窗口)键,在突然生成新窗口之前,它会打印出“ ^ [0Q”四到五次。
如果有人提出建议,将非常欢迎。我在互联网上找到的大多数内容都说要更改终端类型,但实际上我已经尝试了两种程序提供的每种组合。
谢谢!
kf3
从连接到tmux时所使用的TERM )以及xterm样式的修饰键序列fromxterm-keys.c
。因此,您从Gnome-Terminal和MinTTY报告的序列(尽管序列中的escape + zeros应该是escape + letter-ohs(aka SS3))应该由tmux识别,但是只有在具有xterm-keys
选项已启用