即使在配置文件中设置,tmux也不使用screen-256color

时间:2016-11-07 19:24:39

标签: terminal zsh tmux

我试图让tmux使用screen-256color而不是xterm-256color,因为不建议这样做。但是当我不使用tmux时,我想将其保留为xterm-256color

我的一些设置,我目前正在使用iTerm2和ssh到我的开发linux盒子,它正在使用zsh。

在我的〜/ .zshrc中,我有:

export TERM="xterm-256color"

在我的〜/ .tmux.conf中,我有:

set -g default-terminal "screen-256color"

有了这个configuraiton,没有tmux,echo $ TERM返回xterm-256color(这是正确的)并且使用tmux,echo $ TERM仍然返回xterm-256color而不是screen-256color。

我需要设置其他任何内容才能使其正常工作吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

这不能按预期工作的原因是,zsh内启动的tmux会话会覆盖TERM

您不应在shell中设置TERMTERM是终端向shell和其他应用程序通知其功能的方式(颜色数,特殊键的键序列等)。如果在shell中更改TERM,则可以更改shell和应用程序从终端获得的功能,而终端本身不知道它。通常这可能不是实际问题,但最好更改终端配置并在那里设置所需的值。

您在screen-256color的配置中设置tmux时已经这样做了,iTerm2本质上也是一个终端模拟器。要为TERM执行此操作(使用3.0.10版测试):

  1. 打开偏好设置对话框(在菜单中: iTerm2 偏好设置,或按 + )。
  2. 在对话框中,转到配置文件终端
  3. 您可以在报告终端类型下为$fp = fopen('php://output', 'w'); fputcsv($fp, array('Column 1', 'Column 2', 'Column 3')); foreach ( $newarr as $line ) { $val = explode(",", $line); fputcsv($fp, $val); } fclose($fp); 选择所需的值。

答案 1 :(得分:0)

您可以修改.zshrc文件以检查您是否在tmux中运行:

[ -z "$TMUX" ] && export TERM=xterm-256color