我想启用斜体在 tmux 中(macOS Big Sur 11.3 上的 iTerm2 内)。我通过将其设置为实现了这一点.tmux.conf
set -g default-terminal "tmux-256color"
我已经使用 homebrew 安装了 ncurses 6.2 并将其设置在路径中的第一个位置。.zshrc
:
export PATH="$HOMEBREW_PREFIX/opt/ncurses/bin:$PATH"
进行这些更改后,斜体就可以使用了。
但是,现在几个依赖于 ncurses 的程序无法启动:ncdu
(1.15.1) 和nano
(2.0.6 ) 都出错:
Error opening terminal: tmux-256color.
我的印象是他们不支持此TERM
设置。奇怪的是, 1.12在我的 Raspbian 计算机上ncdu
运行。tmux-256color
怎么了?程序不是像ncdu
并且nano
应该兼容吗tmux-256color
?
我找到了一个 hacky 解决方法(对于 macOS,在 Raspbian 上不需要)。如果我明确地改回TERM
中的变量.zshrc
,则所有内容(斜体和程序)都有效:
if [[ "$TERM" == "tmux-256color" ]]; then
export TERM=screen-256color
fi
但我的理解是,TERM
自我设定是一个很大的禁忌。您应该让环境正确设置它。我很惊讶它竟然能工作——tmux-256color
与screen-256color
?这个黑客最终会在我脸上爆炸吗?
答案1
tmux 的终端描述源自 screen 的终端描述,您可能通过查看 infocmp 的输出来猜到。但是使用屏幕终端描述,您将失去修改后的功能键以及更改光标外观的能力。划掉的字符也不起作用。实际上斜体不应该工作,因为屏幕终端描述没有列出斜体(也许 tmux 有一些内置的解决方法 - 更可能的答案是在你的.tmuxrc
文件中)。
导致 ncdu 和 nano 拒绝 tmux-256color 终端描述的问题是 MacOS 提供了非常旧的 ncurses 版本(5.7,从 2008 年开始),用于链接某些程序。纳米在卡塔利娜(也许 ncdu 会在后续版本中发布,但“几个”是有问题的,因为 MacOS 基本系统中只有六个程序实际使用了 Curses)。
MacPorts 和 homebrew 提供当前版本的 ncurses (6.2,2020 年起)。 和6.1(2018),一种新的二进制格式用于终端描述,其数字太大而无法适应带符号的 16 位格式。旧版本忽略该二进制格式;它的数据库没有tmux-256color(添加到2015年5月)。
升级是正确的做法(ncurses 落后了 12 年多,Apple 有点慢,不能指望)。 MacPorts 和 homebrew 都提供更新版本的 nano 和相同版本的 ncdu。