当您不使用tmux或screen时,只需要将终端仿真器配置为将自己广告为“能够显示256种颜色”的方式之一,通过将它们的TERM设置为xterm-256color或任何可与您的终端和平台配合使用的相似值。如何实现这一点取决于终端仿真器,超出了您的问题和这个答案的范围。
在Vim中,您不需要做任何事情,因为它本身就可以做正确的事情。
当您使用tmux或screen时,这些程序会设置自己的默认值$TERM,通常是screen,然后Vim会根据给定的信息执行必要的操作。
如果您想要更加统一(且丰富多彩)的行为,则必须将它们配置为使用“更好”的$TERM值:
- tmux
将以下行添加到~/.tmux.conf:
set -g default-terminal "screen-256color"
屏幕
将以下内容添加到~/.screenrc
文件中:
term "screen-256color"
现在,两个多路复用器都会告诉Vim它们支持256种颜色,而Vim将按照你的期望做出反应。
编辑
我的答案假设您能够编辑这些配置文件,但是,由于您能够编辑~ / .vimrc
,我认为我离正确答案并不远。
编辑2
term
选项的值(使用&term
检索)是由Vim在启动时选择的终端名称。该名称是您应该在终端仿真器本身中设置的名称。
t_Co
选项(&t_Co
)的值是Vim认为主机终端可以显示的最大颜色数。它根据terminfo
中对应于$ TERM
的条目定义:
term | t_Co
-----------------+------
xterm | 8
xterm-256color | 256
screen | 8
screen-256color | 256
当Vim启动时,它获取
TERM
环境变量的值,使用该值查询
terminfo
数据库,并将有关其环境的多个信息存储在几个
t_...
变量中,其中包括可用颜色的数量
t_Co
。对于一个“合法”的终端类型(Vim可以查找到的类型),Vim
始终假定正确的颜色数量。
将
t_Co
设置为
256
,同时保留
term
的Vim定义值,或更一般地,将
t_Co
和/或
term
设置为与主机终端不匹配的值是没有意义的,并且可能会在Vim发送不被终端理解的信号或反之时创建麻烦。
虽然完全可以这样做,但在Vim中搞弄
t_Co
和
term
既毫无意义又可能有害。
再次强调,只需正确设置您的终端仿真器和终端复用器即可。这真的就是你需要的全部。
如果你进入一个终端复用器或终端仿真器中,你无法定义正确的
TERM
,那么只有在这种情况下,你可以强制Vim假定256种颜色。为此,更改
t_Co
的值是唯一有意义的事情:
if &term == "screen"
set t_Co=256
endif
所以,如果你 可以 配置每一个单独的部分:
- 终端模拟器:
xterm-256color
- tmux/screen:
screen-256color
- vim:什么也不用做
然后你就完成了。
如果你 无法 控制每个部件,可以在你的 ~/.vimrc
中使用一个简单的条件语句根据 &term
来设置 t_Co
的值,但是不要改变 term
的值。
但是,如果你可以编辑 ~/.vimrc
,那么没有理由不能编辑 ~/.screenrc
或 ~/.tmux.conf
或 ~/.bashrc
或其他文件。
vim < tmux < ssh < 通过LTE连接的智能手机
,而且这个组合非常棒,因为无论在哪里,你都可以直接回到上次离开的终端会话。确切地说,就是任何地方。 - Steven Lu