微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – vim色彩奇怪的行为在屏幕内有256种颜色

我试图使语法突出显示(256色)的vim工作在屏幕内,它运行在gterm内。

它的工作相当精细的开始。我的意思是“在开始”是,在我开始屏幕,并进入vim,颜色看起来不错,真的256色。

但过了一段时间(我不知道确切的多长时间),颜色自动变回一个外观,好像只有8(或16?)的颜色。

例如,在此之后已经发生,如果我输入命令

hi Comment ctermfg=68

在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

运行python脚本显示所有的颜色后,我发现,这可能是一个屏幕本身的问题,与vim无关。

我做的是,在屏幕会话有问题,这个脚本提供256种颜色,但其中许多实际上是一样的;然而,当我用相同的配置开始一个新的屏幕会话,这个脚本提供了彼此不同的256种颜色。

编辑:

昨晚,我连接到我的Linux计算机(这是在我的办公室,它总是打开)与putty,然后打开一个屏幕会话与多个窗口。颜色昨晚是正确的。然后在我睡觉之前,我分离了屏幕会话并关闭了putty。

现在在早上,当我附加屏幕会话在腻子了,颜色崩溃:他们看起来好像只有8种颜色。

颜色是精细的屏幕外(但仍然在腻子)。

编辑:

三年后,我提出这个问题,今天我看到一个类似的问题。问题是vim可以在屏幕外显示256种颜色,屏幕可以用测试脚本显示256种颜色,但vim不能在屏幕内显示任何颜色(只能显示黑白)。就像对自己的一个注释,这里是我使用的.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

问题的解决方案已经在接受的答案中提到,即我需要包括

export TERM=xterm-256color

in .bashrc。

短回答

在您的.bashrc中将TERM设置为xterm-256color,并将term screen-256color设置为.screenrc。

长答案

这就是为什么这个断点:gnome-terminal,screen,tmux,bash,putty和vim都编写智能地处理256色,但你需要在最早的可能点正确设置的东西。在你的.screenrc中使用termcapinfo实际上是一个胶带解决方案!

如果您的TERM设置正确,它会发信号通知您,你是在256色模式,这意味着它将播放漂亮的屏幕在256色模式以及。

所以,在.bashrc中,导出TERM = xterm-256color。 [1]

在你的.screenrc中,使用screen-256color作为TERM,而不是xterm-256color,并删除剩余的cruft!

在您的PuTTy配置中,使用putty-256color。

你可以下载termcap条目文件,并把它们放在〜/ .terminfo / s和〜/ .terminfo / p,如果你的盒子认没有它们。

脚注

[1]在.bashrc中设置TERM到xterm-256color可能有点假装,特别是如果你在多台机器上使用相同的.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

ssh的别名是一种防御措施,以防止我们尝试在不一定支持它的远程计算机上打开一个256色终端。主块是等式的另一半;它检查相应的terminfo条目是否存在,如果存在,则设置它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全局的情况下:即所有用户都能用这个配置文件地址:/etc/vimrc在文件中添加:setfileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936settermencoding=utf-8setencoding=utf-8如果只修改个人的vim配置情况:需要把/etc/
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图—入门到进阶什么是vim
      vim正则匹配:空行:/^$/  /^[\t]*$/注释行:/^#/ /^[\t]*#/:1,$s/\([Rr]\)oot/\1ename/:1,$s/\(square\)and\(fair\)/\2and\1/ 
$select-editorSelectaneditor.Tochangelater,run'select-editor'.1./bin/ed2./binano<----easiest3./usr/bin/code4./usr/bin/vim.basic5./usr/bin/vim.tinyChoose1-5[2]:4
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下预览图安装工具:u盘、manjarokdeminimal20.0.3、win32DiskImager提取码:qt9f进bios、选择u盘启动、改语言、改时区、挂载分区(文件系统ext4、在200M左右的一个FAT分区上挂载/boot/efi)、安装安装很简单,按提示
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置vi文本编译器,其他的文本编译器则不一定存在很多软件的编译接口都会主动调用vivim有很强的程序编译能力,可以主动的一字体颜色辨别语法的正确性,方便程序设计因为程序简单,编译速度相当快vi的使用一般命令模
主机名字太长,怎么修改?  1.sudovim/etc/hostname 修改内容为wel,  本地主机名 2.sudovim/etc/hosts      修改主机名为wel,用于网络连接中主机名的识别 3.reboot 
目录#事故现场#事故原因#解决方法方法一:使用notepad转换方法二:使用vscode转换方法三:使用vim转换#参考#事故现场执行shell脚本文件,报错::notfound.sh:6:coreinstall.sh:查看脚本文件第6行,发现是空行;#事故原因window下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n
1、保存并退出linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如:vimtest.c之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按Esc退出插入编辑状态,然后输入冒号加wq,点击Enter即可,完整的命令如下:wq如下图:  退出后,如果想要编译
概述使用VIM作简单字数统计背景想做一个简单的字数统计环境OSwin10shellmintty-2.9.41.需求概述需求需求统计文段内字符的数量支持自定义字符集2.方案1:vim自带统计概述vim自带方案操作定位到文段内某行vi