tmux内でvimを使用している間、256色のサポートが有効になっていることがわかります。 $ tput色あり
ただし、tmuxでvimのカラースキームを変更すると、1行単位でカラースキームが変更されますが、背景全体は変更されません。スクリーンショットを見る
これは、たとえば、私の.vimrcファイルの抜粋です。私のオリジナルのカラーシェイムは暗くなって、それから走った後に色づけされます。
情報
私の〜/ .tmux.confに
set -g default-terminal "screen-256color"
私の〜/ .vimrcに
set t_Co=256
私の〜/ .bashrcに
# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"
私の〜/ .profileに
# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
export TERM='xterm-256color'
else
export TERM='xterm-color'
fi
どのように私はVimで完全なカラースキームの変更を得ることができますか?ファイルのスニペットはすべて見栄えが良いですか。
あなたの.bashrcと.profileを見ると、tmux内のシェルはあなたのtmux confの 'default-terminal'設定を上書きしています。このようなもの:
TERM=screen-256color
で新しいシェルを作成しますTERM=xterm-256color
あなたが実行することでこれを確認することができます
echo $TERM
新鮮なtmuxシェルで。
Tmuxは端末を正しく設定することに関して比較的うるさいです。可能であれば、.bashrcではなくgnome-terminalの設定でtermの値を設定してください。それに失敗したら、それらの設定を "screen"または "screen-256color" TERMのチェックで囲み、その場合それらをリセットしないでください。
Tmuxは、端末をscreen
またはscreen-256color
に設定します。
ここで説明されているように 、無効にするBackground Color Erase(BCE)端末オプションt_ut
をクリアして(Vimで:set t_ut=
を実行してから押す) Control+L tmuxとGNU screenの中でVimが使われているときに配色が正しく機能するように、端末の表示を更新します。
この投稿 でもっと良い方法を見つけました。 tmuxのエイリアスをtmux -2
にすると、シェルは256色の端末を使用しているとtmuxに想定させることができます。
これは#Ubuntuと#Macで私のために働いたものです:
# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
export TERM=xterm-256color
fi
alias tmux='tmux -2' # for 256color
alias tmux='tmux -u' # to get rid of unicode rendering problem
設定を再読み込みします。
$ source〜/ .bashrc#Ubuntu
$ source〜/ .bash_profile#Mac
Mac用に.bashrcを設定します(tmuxで使用されているため)。
# File: ~/.bashrc (Mac)
source ~/.bash_profile
〜/ .tmux.confで "default-terminal"オプションを設定してください。
# File: ~/.tmux.conf
set -g default-terminal "screen-256color" # Mac and Ubuntu
私はgnome-terminal + tmux + vimについても非常によく似た問題を抱えていましたが、特定のキーの組み合わせの問題にも拡張されました。私はいくつかのことを一緒に組み合わせる必要がありました。まず最初に、.tmux.confを次のように設定しなければなりませんでした。
# Ensure terminal starts with its own colour scheme (helps Vim/Neovim themes to not break)
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color" # no S-Fx keys ;-(
# and ensure the key-codes are xterm alike
set -g xterm-keys on
それから.vimrc:
if $COLORTERM == 'gnome-terminal'
set t_Co=256
endif
set t_ut=
それが鍵と背景の仕事でした。
それでも問題が解決しない場合:t_Co=8
が$TERM
に設定されている場合でも、vimはtmux内でオプションscreen-256color
の使用にフォールバックすることに気付きました。私の回避策はvimrcのこのスニペットです:
if exists("$TMUX")
set t_Co=256
set notermguicolors
else
set termguicolors
endif
$TMUX
変数は、tmuxセッション内の場合にのみ入力されます。この場合、vimが256色を使用できるようにします。 tmuxはトゥルーカラーをサポートしていないため、termguicolorsの設定も解除することに注意してください。
手っ取り早い解決策は端末で以下を実行することです。
export TERM=xterm-color
あなたはそれをあなたの~/.bash_profile
または他のプロファイルに追加して常に起動時に設定することができます。
ちょうど今同じ問題に直面しました。 bloyの回答と現在の〜/ .profileの内容に基づいています(実際にはwinchendonspringsと同じです。 ')次のようにして問題を解決しました。
~/.profile
:
if [[ -z $TMUX ]]; then
if [ -e /usr/share/terminfo/x/xterm+256color ]; then # may be xterm-256 depending on your distro
export TERM='xterm-256color'
else
export TERM='xterm'
fi
else
if [ -e /usr/share/terminfo/s/screen-256color ]; then
export TERM='screen-256color'
else
export TERM='screen'
fi
fi
論理は簡単です。tmuxセッション内にいない場合は、xterm(色付きかどうかは関係ありません)を使用してください。それ以外はscreenでも同じことが言えます。
冗長すぎるかもしれませんが、あなたはその考えを思いつきました。