今天我注意到 Weechat 不支持 256 色。我决定快速修复这个问题。但事实并非如此。
我首先在 Google 上搜索的是如何测试终端的颜色支持。我已经colortest
在本地机器上安装了它,当我运行它时,它显示 256 种颜色。但是,当我运行时,echo $TERM
它一直显示xterm
。
由于我不知道所有这些事情的细节,我尝试对其进行配置,以便它与该主题的每个教程相匹配。他们都说它应该给我screen-256colors
。
我做的第一件事就是将其添加到我的.zshrc
文件中:
# If the $term variable is xterm, change it to 256 colors!
if [ "$TERM" = "xterm" ]; then
# No it isn't, it's gnome-terminal
export TERM="xterm-256color"
fi
它说的xterm-256colors
是 而不是screen-256colors
。没关系,有些教程告诉我这样做。
我启动一个新终端,echo $TERM
发现它确实已设置。启动tmux
并查看输入时显示的内容echo $TERM
。它显示screen
。因此,这应该可以向我展示screen-256colors
它在 weechat 中正常工作。因此,接下来我尝试将文件xterm-256colors
中的更改为,但当我这样做时,我得到了乱码输出。请参阅屏幕截图。.zshrc
screen-256colors
因此,我接下来在 Google 上搜索如何更改 tmux 的变量。我发现此链接。它显示了配置 tmux 以使用 256 种颜色的选项。几乎所有教程中都会显示该选项。
set -g default-terminal "screen-256color"
所以我尝试了一下,但什么也没改变。所以我又在谷歌上搜索了一下,发现这个问题。 引用:
Tmux 对于终端的正确设置相对比较挑剔。如果可以,请在 gnome-terminal 的配置中设置 term 值,而不是在 .bashrc 中。如果做不到这一点,请在这些设置周围加上“
screen
”或“screen-256color
”TERM 复选框,在这种情况下不要重置它们。
好的,所以我明白在 之外tmux
我不应该使用 的screen*
值$TERM
。没关系,因为它被设置为。然后它清楚地表明,如果变量被设置为 ,xterm-256colors
我不应该覆盖它。我已确保在我的文件中使用测试。$TERM
screen
if
.zshrc
让我最困惑的是 256 种颜色在 tmux 中居然能用。见下面的截图。当我echo $TERM
在 tmux 中运行时,它显示screen
。当我运行时,colortest-256
它正确地显示了所有颜色。然而,我思考weechat 根据$TERM
变量来显示颜色。由于我在内部运行它tmux
并将其$TERM
设置为,screen
因此它假定我不支持 256 色。
我不知道该如何解决这个问题。我只想在 weechat 中添加一些颜色 :>
为了完整起见,下面是我的两个配置文件。
.zshrc
# Path to your oh-my-zsh installation.
export ZSH=/home/christophe/.oh-my-zsh
ZSH_THEME="flazz"
plugins=(git command-not-found common-aliases dircycle lein)
# Show dots for progress
COMPLETION_WAITING_DOTS="true"
##########
## PATH ##
##########
# Export directory if it exists.
#if [ -d "/usr/local/go/bin" ]; then
# export PATH=$PATH:/usr/local/go/bin
#fi
#############
## ALIASES ##
#############
alias randompass="< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;"
############
## TWEAKS ##
############
# Disable shared history
setopt no_share_history
# Start existing or new tmux session each shell startup
#[[ $TERM != "screen" ]] && exec tmux attach -d
alias chat='tmux attach -dt weechat || tmux new -s weechat \; new-window htop'
# If the $term variable is xterm, change it to 256 colors!
if [ "$TERM" = "xterm" ]; then
# No it isn't, it's gnome-terminal
export TERM="xterm-256color"
fi
######################
# User configuration #
######################
export PATH="/home/christophe/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
source $ZSH/oh-my-zsh.sh
.tmux.conf
# 256 color support
set -g default-terminal "screen-256color"
答案1
首先我想确认你已经弄清楚的事情,即您应该在 或 的正下方gnome-terminal
(即tmux
或之外screen
)设置TERM=xterm-256color
,而在tmux
或 之内screen
应该将其设置为TERM=screen-256color
。
显然,您的.zshrc
段已正确将其设置为由 gnome-terminal 直接运行的 shell。
我不确定需要输入什么,我已经在我的xterm-256color 片段.tmux.conf
中解决了这个问题。我还删除了由 设置的并导致一些问题,但显然没有设置它,所以它对你来说应该没有区别。.bashrc
.zshrc
TERMCAP
screen
tmux
if [ "$TERM" = "xterm" ]; then
export TERM=xterm-256color
fi
if [ "$TERM" = "screen" -o "$TERM" = "screen-256color" ]; then
export TERM=screen-256color
unset TERMCAP
fi
这能解决您的问题吗?
顺便说一句,除了这些代码片段之外,复制你的代码.tmux.conf
也能为我正确设置(在 Vivid 上),所以你的思路是对的,它应该可以工作。你的 zsh 是否还有其他来源(例如全局配置或 oh-my-zsh)可以恢复为 8/16 色TERM=screen
?