FJD*_*JDU 45 vim bash terminal gnu-screen colors
我试图在vim里面screen运行语法高亮(256色)工作gterm.
它在一开始就很好用.我在"开头"的意思是,在我开始之后screen,进入vim,颜色看起来很好,并且有256种颜色.
但是过了一会儿(我不确切知道多长时间)颜色会自动变回外观,好像只有8种(或16种)颜色.
例如,在此之后,如果我输入命令
hi Comment ctermfg=68
Run Code Online (Sandbox Code Playgroud)
在里面vim,评论似乎是"纯粹的"绿色; 但是,如果我打开另一个vim外部屏幕(在同一个终端中),则使用相同的命令,注释看起来是"黄色"绿色.
以下是与颜色相关的.screenrc设置:
attrcolor b ".I"
defbce "on"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term xterm-256color
Run Code Online (Sandbox Code Playgroud)
运行python脚本显示所有颜色后,我发现这可能是屏幕本身的问题,与vim无关.
我所做的是,在screen有问题的会话中,这个脚本给出256种颜色,但其中许多实际上是相同的; 但是,当我使用相同的配置启动新的屏幕会话时,此脚本会提供256种颜色,这两种颜色彼此不同.
编辑:
昨晚我连接到我的Linux计算机(在我的办公室,它总是打开)putty,然后打开一个screen包含多个窗口的会话.昨晚的颜色是正确的.然后在我睡觉前,我分开screen会议并关闭putty.
现在早上当我再次附上那个screen会话putty时,颜色会崩溃:它们看起来好像只有8种颜色.
外面的颜色很好screen(但仍在putty).
编辑:
三年后,在我问这个问题之后,今天我看到了类似的问题.问题是vim可以在外面显示256种颜色screen,并且screen可以用测试脚本显示256种颜色,但vim不能在里面显示任何颜色(只能显示黑白)screen.就像对自己的说明一样,这是.screenrc我正在使用的文件
hardstatus alwayslastline "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y-%m-%d %c"
shell "bash"
startup_message off
vbell off
altscreen on
attrcolor b ".I"
defbce "on"
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term screen-256color
Run Code Online (Sandbox Code Playgroud)
在接受的答案中已经提到了问题的解决方案,即我需要包括
export TERM=xterm-256color
Run Code Online (Sandbox Code Playgroud)
在.bashrc.
Max*_*tor 87
设置TERM到xterm-256color你.bashrc,并把term screen-256color你的.screenrc.
这就是为什么它会破坏:gnome-terminal,screen,tmux,bash,putty和vim 都被写成智能处理256种颜色,但你需要尽可能早地设置.termcapinfo在你的使用.screenrc实际上是一个胶带解决方案!
如果你TERM的设置正确,它会发出信号暗示您处于256色模式,这意味着它也可以在256色模式下运行.
所以,在你的.bashrc,export TERM=xterm-256color.[1]
在你的.screenrc,screen-256color用来TERM代替xterm-256color,并删除其余的cruft!
在PuTTy配置中,使用putty-256color.
您也可以下载termcap项目文件,并把他们在~/.terminfo/s和~/.terminfo/p,如果你的机器默认不拥有他们.
脚注
[1]设置TERM到xterm-256color你.bashrc可以稍微放肆,特别是如果你使用相同的.bashrc多台计算机上.我发现以下代码段相当有效:
case "$TERM" in
*-256color)
alias ssh='TERM=${TERM%-256color} ssh'
;;
*)
POTENTIAL_TERM=${TERM}-256color
POTENTIAL_TERMINFO=${TERM:0:1}/$POTENTIAL_TERM
# better to check $(toe -a | awk '{print $1}') maybe?
BOX_TERMINFO_DIR=/usr/share/terminfo
[[ -f $BOX_TERMINFO_DIR/$POTENTIAL_TERMINFO ]] && \
export TERM=$POTENTIAL_TERM
HOME_TERMINFO_DIR=$HOME/.terminfo
[[ -f $HOME_TERMINFO_DIR/$POTENTIAL_TERMINFO ]] && \
export TERM=$POTENTIAL_TERM
;;
esac
Run Code Online (Sandbox Code Playgroud)
该aliasSSH的是阻止我们试图打开一个远程计算机并不一定支持它在256色终端防御措施.主要部分是等式的另一半; 它检查相应的terminfo条目是否存在,如果存在,则设置它.
Nic*_*ill 16
Max有一个很好的答案,但我实际上不得不重新安装屏幕./configure --enable-colors256以确保config.h文件已#define COLORS256 1设置,这在我的机器上默认情况并非如此.然后,我发现其他设置是不必要的,只要我确保我的TERM设置xterm-256color.