.zshrc

.zshrc

今天我注意到 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中的更改为,但当我这样做时,我得到了乱码输出。请参阅屏幕截图。.zshrcscreen-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我不应该覆盖它。我已确保在我的文件中使用测试。$TERMscreenif.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.zshrcTERMCAPscreentmux

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

相关内容