Jeffrey L. Roberts Asked: 2018-02-14 11:37:16 +0800 CST2018-02-14 11:37:16 +0800 CST 2018-02-14 11:37:16 +0800 CST BitchX 中的 ANSI 无法正确显示 772 我试图让 ANSI 在 OS X 上使用 Iterm2 的屏幕会话中正确显示,默认 TERM 设置为 screen.xterm-256color 我试过了 export TERM=vt100 和 export TERM=ansi 和 export TERM=xterm w/ tmux gnu-screen ansi 2 个回答 Voted Thomas Dickey 2018-02-14T18:09:34+08:002018-02-14T18:09:34+08:00 设置TERM=ansi将无法正常工作,因为tmux仅设计用于处理screen终端描述中的转义序列。 如果您这样做infocmp ansi screen,您可能会注意到这些行,显示终端应用程序将使用的终端功能,这在两个终端描述之间有所不同,但 tmux 和/或 iTerm2 在以这种方式误导时处理不当: ech: '\E[%p1%dX', NULL. rep: '%p1%c\E[%p2%{1}%-%db', NULL. rin: '\E[%p1%dT', NULL. rmpch: '\E[10m', NULL. rmacs: '\E[10m', '^O'. smacs: '\E[11m', '^N'. smpch: '\E[11m', NULL. 由于 tmux 很混乱,因此无法保证显示屏上会显示什么。 这同样适用于TERM=xterm。该tmux手册记录了这一限制。 设置TERM=vt100很接近(用于infocmp查看),但大多数人都知道vt100 从未做过 ANSI color。 Best Answer caf 2018-02-14T20:12:52+08:002018-02-14T20:12:52+08:00 问题不在于终端仿真 - 保持 TERM 设置不变。 就是UI的那些部分使用的字符集是CP437,但是您的终端设置为另一个字符集(可能是UTF8)。 您可以将 iTerm2 设置为使用 CP437(如果它支持)(设置在终端/字符编码下),或者您可以使用cp437 实用程序在 UTF-8 终端上模拟 CP437 终端。
设置
TERM=ansi
将无法正常工作,因为tmux
仅设计用于处理screen
终端描述中的转义序列。如果您这样做
infocmp ansi screen
,您可能会注意到这些行,显示终端应用程序将使用的终端功能,这在两个终端描述之间有所不同,但 tmux 和/或 iTerm2 在以这种方式误导时处理不当:由于 tmux 很混乱,因此无法保证显示屏上会显示什么。
这同样适用于
TERM=xterm
。该tmux
手册记录了这一限制。设置
TERM=vt100
很接近(用于infocmp
查看),但大多数人都知道vt100 从未做过 ANSI color。问题不在于终端仿真 - 保持 TERM 设置不变。
就是UI的那些部分使用的字符集是CP437,但是您的终端设置为另一个字符集(可能是UTF8)。
您可以将 iTerm2 设置为使用 CP437(如果它支持)(设置在终端/字符编码下),或者您可以使用cp437 实用程序在 UTF-8 终端上模拟 CP437 终端。