如何修复一些 tmux 问题(屏幕而不是 xterm;功能键)?



为什么 tmux 会将终端从 xterm 更改为屏幕,以及如何修复 emacs 中由此产生的文本颜色变化?我认为最简单的方法是首先防止它更改为屏幕。

我可以暂时使用TERM=xterm emacs file.ext来执行此操作,但这只是一个解决方法,不能解决问题的根源。

此外,使用 tmux 时,功能键在 emacs 中不再起作用。F3 和 F4 不是宏快捷方式,它们只是像在外壳中一样打印波浪号。这似乎与上面提到的xterm/screen无关。这里发生了什么,我该如何解决这个问题?

tmuxTERM设置为screen,因为该终端描述仅限于tmux知道如何使用的东西。 像screen一样,tmux将特征从外部终端描述转换为内部特征描述。

如果特殊键(功能键、光标键等)在终端描述中没有完全匹配,tmux忽略它。

PuTTY的默认配置为 F1-F4 发送不同的转义序列。PuTTY发送的序列不在xterm的终端描述中。

以下是两者的比较(作为CSV文件,但可读性足够强):

NAME,putty,xterm
kf1,E[11~,EOP
kf2,E[12~,EOQ
kf3,E[13~,EOR
kf4,E[14~,EOS
kf5,E[15~,E[15~
kf6,E[17~,E[17~
kf7,E[18~,E[18~
kf8,E[19~,E[19~
kf9,E[20~,E[20~
kf10,E[21~,E[21~
kf11,E[23~,E[23~
kf12,E[24~,E[24~
kf13,E[25~,E[1;2P
kf14,E[26~,E[1;2Q
kf15,E[28~,E[1;2R
kf16,E[29~,E[1;2S
kf17,E[31~,E[15;2~
kf18,E[32~,E[17;2~
kf19,E[33~,E[18;2~
kf20,E[34~,E[19;2~

你很难让 PuTTY 发送 F13-F20,但肯定会遇到麻烦,使用 PuTTY 和 tmux 和TERM=xterm.

关于颜色,同样的问题也适用。 屏幕终端描述告诉应用程序终端可以支持 8 种颜色,并说明如何显示这 8 种颜色。 如果您的外部终端可以做更多的事情,那么 tmux 和屏幕会隐藏它。

转换并不完美。 GNUscreen有一个功能,它寻找相应的screen.$TERM终端描述(即将外部TERM值连接到screen)。tmux不这样做:它对xterm做出假设。 但是PuTTY并不xterm...

ncurses 有几个用于终端描述的串联终端名称,但没有人提出一种让tmux自动使用它们的方法。

最新更新