我需要我的$TERM
是xterm-256color
TMUX以外(在“普通”与zsh的终端),但screen-256color
里面TMUX。
首先我试过:
export TERM='xterm-256color'
到我的~/.zshrc
.set -g default-terminal "screen-256color"
到我的~/.tmux.conf
现在,当我打开终端(比如 xterm)时,TERM
是xterm-256color
,这是正确的。但是当我运行 tmux 时,又TERM
是xterm-256color
!
然后我尝试在我的~/.zshrc
. 现在,当我打开终端时,TERM
是xterm
,而当我运行 tmux 时,TERM
是screen-256color
。如此看来,如果我设置TERM
的.zshrc
,首先TMUX套TERM
到screen-256color
,运行外壳(这是zsh的),和zsh的读取.zshrc
和复位TERM
来xterm-256color
。
那么,如何让TERM
要xterm-256color
在“普通”终端,并screen-256color
在TMUX?
Cal*_*leb 27
TERM 环境变量应由充当终端的应用程序设置。这就是事情的重点:让在其中运行的程序知道正在使用什么终端,从而知道它支持什么样的功能。
Zsh 不是终端。它是一个壳。如果它想做特殊的事情,它可能会关心您的 TERM 设置为什么,但它不应该负责设置它。相反,它负责设置诸如 ZSH_VERSION 之类的变量,脚本或其他子进程可以使用这些变量来了解其父 shell 所期望的行为。
相反,您需要检查您正在使用的任何终端应用程序的配置,并要求它正确报告自己。例如,您可以通过将此行添加到~/.Xdefaults
用于配置值的文件来为 xterm 执行此操作:
xterm*termName: xterm-256color
Run Code Online (Sandbox Code Playgroud)
看起来 gnome-terminal 做了一件愚蠢的事情,那就是阅读你的 xterm 配置而不是拥有它自己的配置。在某些情况下,这可能会让您满意,但更应该将其设置为 vte-256color。这似乎是对它(以及其他一些基于 VTE 的终端仿真器)的长期抱怨。一个常见的方法来破解的解决办法是利用它并设置其他值:
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=vte-256color
fi
Run Code Online (Sandbox Code Playgroud)
但这又使您回到了 tmux 的问题,因此,如果 TERM 已经是“screen-256color”或“screen”之类的内容,则必须通过不重置 TERM 来解决这个问题:
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=vte-256color
fi
Run Code Online (Sandbox Code Playgroud)
对于其他终端,您将需要查找其正确的配置例程。
thi*_*wfx 10
在您的 .zshrc 中,放入
[[ -n $TMUX ]] && export TERM="xterm-256color"
Run Code Online (Sandbox Code Playgroud)
而且,在你的 .tmux.conf 里面
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44161 次 |
最近记录: |