VIM:与TMUX结合t_Co = 256和术语= xterm的-256color之间的差异(Vim

2019-07-21 10:50发布

我测试,我倾向于使用SSH来进,我有TMUX建立在Linux系统的各种不同的终端。

基本上,我注意到了这个行为,我希望有人能提供什么事情的说明。 现在,它可能是,这是影响提示应用程序特定行为的情况。

我使用议会内TMUX,以及关于iPhone5的我恐慌的提示应用程序我有以下行为:如果256个色未启用时.vimrc使用设置颜色set t_Co=256指令。 在这里,在Vim正确显示的颜色,当它不是通过TMUX运行。 此外,OS X的Terminal.app正确的Vim呈现在TMUX的颜色(我没有这个不幸上测试的窗户腻子)。

然后我换出set t_Co=256set term=xterm-256color现在的颜色通过使用TMUX Vim时工作。

另请注意,我测试了set -g default-terminal "xterm-256color"set -g default-terminal "screen-256color"为TMUX设置和这种变化对行为产生任何影响。

Answer 1:

当你不使用tmuxscreen ,你只需要配置您的终端仿真器通过设置宣传自己是“能够显示256种颜色的” TERMxterm-256color或与您的终端和平台的工作原理任何可比价值。 你是如何做到的将取决于终端仿真器,是你的问题,这个答案的范围之外。

你不需要在Vim里做任何事情 ,因为它是完全能够自己做了正确的事情。

当您使用tmuxscreen ,这些程序设置为自己的缺省值$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认为是,可以由主机终端被显示的色彩的最大数目。 它是根据对应条目定义$TERMterminfo

 term            | t_Co
-----------------+------ 
 xterm           | 8
 xterm-256color  | 256
 screen          | 8
 screen-256color | 256

如果Vim启动时,它得到的值TERM环境变量,查询terminfo与价值的数据库和几个存储了一些关于它的环境信息的t_…变量其中...的颜色中可用的数量t_Co 。 给定一个“合法”的终端类型(一个Vim可以查找)时,Vim 总是假定的颜色正确的数字。

设置t_Co256 ,同时保留term为Vim的定义值-或者更一般地,设置t_Co和/或term到不与主机终端匹配值-是没有意义的,很可能会创造麻烦在Vim发送信号不是由终端或反之亦然理解。

虽然这是完全有可能的话,搞乱t_Coterm是Vim都完全无用的和可能有害。

同样,只需设置你的终端模拟器和终端复用器正确。 这真的是你所需要的。

如果你在一个终端复用器或终端仿真器,你不能确定正确的最终TERM ,那么只有到那时,你可以强制Vim来承担256个色。 为此,改变的值t_Co是唯一有意义的事情:

if &term == "screen"
  set t_Co=256
endif

所以...如果你可以配置每个独立的部分:

  • 终端仿真器: xterm-256color
  • TMUX /屏幕: screen-256color
  • VIM:无

和你做。

如果你无法控制每一个部分,用一个简单的条件在你~/.vimrc设置t_Co根据&term ,但不改变的值term

但是,如果你可以编辑~/.vimrc没有理由你不能编辑~/.screenrc~/.tmux.conf~/.bashrc或什么的。



Answer 2:

您可以使用这两种set t_Co=256set term=xterm-256color在一起。

term告诉Vim使用什么终端类型,它控制的Vim所有方面,包括如何映射键输入时,重画屏幕,移动光标,显示颜色等。通常显示/呈现,Vim可以在算出这个其通过自己的TERM由你的操作系统提供的环境变量。

这往往有助于明确设置的情况下,操作系统值不正确。 如果你从一个终端仿真器,没有提供正确的值连接在网络上尤其如此。

t_Co是许多终端选项(由Vim使用终端控制的termcap系统中使用的)之一。 它特指的终端支持的颜色的数目。 有时候,你需要重写此如果终端仿真大多是正确的,但Vim的不正确识别的支持颜色数。

我用这两个选项在我.vimrc确保Vim的使用所有我喜欢的终端(Ubuntu的Gnome终端,OSX的iTerm2,和Windows的凯蒂猫)在TMUX 256个色。 我也有大部分的那些终端的显式配置为发送xterm-256color作为他们的终端类型。



文章来源: Vim: Difference between t_Co=256 and term=xterm-256color in conjunction with TMUX