在我的本地计算机上,iterm终端包含tmux。在tmux里面,有ssh远程连接。在这个远程连接中,我在服务器端运行tmux。在那个tmux中,我运行vim。
所以,容器关系如下:首先是iterm,然后是tmux,然后是ssh远程连接,然后是tmux,然后是vim。
现在,vim的颜色是如何确定的?哪种应用的颜色方案有效?
答案 0 :(得分:7)
您看到的颜色很好地受到终端仿真器的“物理”功能的限制,但它们的数量通常会被程序使用的TERM
环境变量所改变,以确定它们的可能性。在他们的着色。
用简单的术语......
当Vim检查您的TERM
并看到包含256
的值时,它会假定您的终端模拟器能够显示256种颜色并采取相应的行动。
当您的TERM
为xterm
或screen
(以及其他人)时,Vim会假设您的终端模拟器只能显示8种颜色并采取相应的行动。
假设您的本地终端模拟器中的当前TERM
为xterm-256color
且中间*rc
没有设置特定的TERM
:
WHERE TERM COLORS
--------------------------------------------------------------
local xterm-256color 256
local > vim xterm-256color 256
local > remote xterm-256color 256
local > remote > vim xterm-256color 256
local > remote > remote > remote > remote > remote > remote >
> remote > remote > remote > remote xterm-256color 256
local > remote > tmux screen 8
local > remote > tmux > vim screen 8
local > tmux screen 8
local > tmux > vim screen 8
local > tmux > remote screen 8
local > tmux > remote > tmux screen 8
local > tmux > remote > tmux > vim screen 8
Tmux作为终端多路复用器,就好像它是一个终端仿真器,并将TERM
更改为tmux的默认值screen
,并且新值是沿链传递的值。
如果你想在任何地方使用tmux 和花哨的颜色,你需要配置每个tmux以使用256色准备TERM
。在您登录的每台计算机上将此行放在~/.tmux.conf
中,包括您的:
set-option -g default-terminal "screen-256color"