今日、私はWeechatで256色をサポートしていないことに気付きました。これは簡単な修正だと思いました。そうではありません。
私が最初にグーグルで調べたのは、ターミナルで色のサポートをテストする方法でした。 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
と表示されます。だから、weechatで適切に動作するようにscreen-256colors
が表示されます。そのため、次にxterm-256colors
ファイルの.zshrc
をscreen-256colors
に変更しようとしましたが、それを行うと出力が文字化けします。スクリーンショットをご覧ください。
そこで、次にtmuxの変数を変更する方法をグーグルで調べました。 このリンク が見つかりました。 256色を使用するようにtmuxを構成するオプションを示しています。これは、ほとんどすべてのチュートリアルに示されているオプションです。
set -g default-terminal "screen-256color"
だから私はそれを試したが、それでも物事を変えなかった。それで、私はもう少しグーグルで検索して、 この質問 を見つけました。見積もり:
Tmuxは、ターミナルを正しく設定することについて比較的気難しいです。可能であれば、用語値を.bashrcではなく、gnome-terminalの構成で設定します。それに失敗したら、それらの設定を「
screen
」または「screen-256color
」TERMのチェックで囲み、その場合はリセットしないでください。
さて、tmux
以外では、screen*
に$TERM
値を使用すべきではないことを理解しています。 xterm-256colors
に設定されているので大丈夫です。それから、screen
に設定されている場合、$TERM
変数をオーバーライドしてはならないと明確に述べています。 .zshrc
ファイルでif
テストを使用することを確認しました。
主に私を混乱させるのは、256色が実際にtmuxで機能するということです。下のスクリーンショットをご覧ください。 tmux内でecho $TERM
を実行すると、screen
と表示されます。 colortest-256
を実行すると、すべての色が適切に表示されます。それでも、Ithinkweechatは$TERM
変数に基づいて色を表示します。そして、$TERM
をtmux
に設定してscreen
内で実行するため、256色のサポートがないことを前提としています。
この問題を解決する方法に困惑しています。私が欲しかったのはweechatの色だけでした:>
完全を期すために、2つの構成ファイルを示します。
# 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
# 256 color support
set -g default-terminal "screen-256color"
まず最初に、あなたが既に理解していること、つまりgnome-terminal
の直下(つまり、tmux
またはscreen
の外側)を確認して、TERM=xterm-256color
。ただし、tmux
またはscreen
内では、TERM=screen-256color
に設定する必要があります。
明らかに、.zshrc
セグメントは、gnome-terminalによって直接実行されるシェルに適切に設定します。
.tmux.conf
に何を入れる必要があるかわかりません。xterm-256colorの.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で)適切に設定されるため、正常に動作するはずです。 8/16色TERM=screen
に戻るzshによってソースされた何か(たとえば、グローバル構成、またはoh-my-zsh)がありますか?