我使用 MobaXterm 从 Windows 计算机连接到远程计算机,并附加到 tmux 会话。某些键未正确发送,例如当我按前缀 + {上,下,右,左} 时,前缀 + 箭头键仅打印 {A,B,C,D},而这些键应在 tmux 窗格之间导航。如果我使用 Putty(而不是 MobaXterm),我可以通过使用“linux”终端而不是“xterm”来解决此问题,但在 MobaXterm 中,我可以选择的终端类型是 xterm、xterm-r6、vt100、vt220 和 vt900。它们都不起作用。
我猜部分问题是远程机器本身(运行Ubuntu 16.04),因为其他远程机器没有这个问题。
有什么建议么?
答案1
Red Hat 6 和 Ubuntu 16 之间存在不相关的条目差异screen-256color
:后者添加dim
和省略了initc
.这些更改都与光标键无关。
大概的价值TERM
外部 tmux
是xterm
。两个系统之间还存在不相关的条目更改xterm
(光标颜色扩展终端数据库中提到)。
linux
但是,和条目之间存在显着差异xterm
:xterm
条目(在两种情况下)初始化要使用的终端应用方式对于光标键和小键盘键,而 for 则linux
不是。应用程序模式为光标键发送不同的字符序列(这是这个问题的重点)。
Red Hat 6 有 tmux 1.6,Ubuntu 16 有 tmux 2.3。无论哪种情况,tmux
请阅读终端描述并尝试匹配您发送的转义序列外部终端的光标键和功能键,并在之前存储这些键的概念(作为键码和移位/控制信息)生成终端描述后面的等效转义序列里面 tmux
。
如果您的.tmux.conf
文件有冲突的设置,如图所示Ctrl + 箭头键在 tmux 中工作,那么相当旧的和相当新的tmux
程序将因修改的光标键而有所不同:
- 在 CentOS6 中,向上移动箭头给出
^[[A^[[1;2A
,而 Ubuntu 显示^[[A
。 - control-uparrow 也不同。
造成差异的原因(实际上)是在tmux
阅读方面的改进扩展来自终端数据库的关键定义。在旧版本中,tmux
没有注意到终端描述中没有定义 xterm 样式的键screen-256color
。于是就将信息传递了下去。在较新的版本中,tmux
看到它们没有定义,并且(因为被告知要了解 xterm-keys),仅使用那些是在指定的终端描述中定义。
进一步阅读:
答案2
这可能是一个冲突的前缀键,因此您可以尝试更改它。 Tmux 允许这样做,并且您可以通过创建~/.tmux.conf
文件来使其持久化。
添加到conf文件的行将是这样的:
set-option -g 前缀 Ma
这会将您的前缀键更改为Alt+A
如果您不希望这些更改持续存在,您可以从 tmux 中将该行作为命令运行。
以下是关于正确语法的一些信息(摘自手册页):
按键绑定 tmux 允许将命令绑定到大多数键,无论有或没有前缀键。当指定键时,大多数代表它们 - 自我(例如“A”到“Z”)。 Ctrl 键可能带有“C-”或“^”前缀,Alt(元)带有“M-”前缀。除此之外 接受以下特殊键名称:Up、Down、Left、Right、BSpace、BTab、DC(删除)、End、Enter、Escape、F1 至 F12、 Home、IC(插入)、NPage/PageDown/PgDn、PPage/PageUp/PgUp、空格和 Tab。注意要绑定 '"' 或 ''' 键,引号 标记是必要的,例如: