无法根据终端支持在.screenrc中设置颜色

3

我希望在.screenrc中有一个if-else循环,用于以下代码,只有当我的终端支持256种颜色时才运行它,否则不运行。

attrcolor b ".I"
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"
termcapinfo xterm-color "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"

您如何在.screenrc中创建if-else循环?
3个回答

2
这个应该已经在terminfo数据库文件中设置好了。在我的情况下,我的默认终端是xterm。它使用8种颜色,在vi中通过使用

:set termcap

命令并检查t_Co项,可以反映出这一点,该项设置为8。如果我将终端更改为另一种类型的终端,如使用256种颜色的gnome-256color,则vi将显示t_Co等于256。我不确定为什么需要在.vimrc文件中尝试设置这个。


谢谢您提供的信息!现在唯一的问题是如何在.screenrc中使用if-else循环。 - Léo Léopold Hertz 준영

1

如果您有可用的bash,我相信类似这样的代码应该可以工作:

#!/bin/bash
if [ "$TERM" = "xterm-256color" ]; then
    # do stuff for 256
else
    if [ "$TERM" = "xterm" ]; then
        # do stuff for 16
    else
        # do something else entirely
    fi
fi

我的终端应用程序是OS/X的iTerm。我不确定你的代码是否有效,因为我没有证据证明它有效。 - Léo Léopold Hertz 준영
如果在OSX上执行“cat $TERM”会发生什么? - Jeremy Logan

0

我的伪代码尝试:.screenrc

[ -e t_Co(256) ] . ColorFile

The same in English

If 256 color support, then source ColorFile.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接