tmux内でvimを使用している間、256色のサポートが有効になっていることがわかります
しかし、tmux を使用している間に vim でカラースキームを変更すると、1 行ごとにカラースキームが変更されますが、背景全体のカラースキームは変更されません
ここに私の.vimrcファイルの例を示します。私のオリジナルのカラースキームはソラライズされた暗い色になっていますが、 :colorscheme molokai を実行するとどうなるか見てみましょう
info
- gnome-terminal
- bash
私の ~/.tmux.conf で
set -g default-terminal "screen-256color"
私の ~/.vimrc で
set t_Co=256
で
# 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でフルカラースキームを変更する方法はありますか?ファイルからの私のスニペットはすべて良い感じですか?
101 winchendonsprings 2012-03-10
.bashrc と .profile を見ると、tmux 内のシェルは tmux の conf の ‘default-terminal’ 設定をオーバーライドしています。このような感じです
- tmuxは
TERM=screen-256color
で新しいシェルを作成します - .bashrc/.profileを実行し、
TERM=xterm-256color
を設定します - vim が実行され、tmux の TERM を正しく使用しようとします
を実行することで確認できます
echo $TERM
を新鮮な tmux シェルで使用しています
Tmux はターミナルが正しく設定されていることに比較的うるさいです。可能であれば、.bashrc ではなく gnome-terminal の設定で term の値を設定してください。それができない場合は、それらの設定を “screen” や “screen-256color” TERM のチェックで囲み、その場合はリセットしないようにしてください
Tmuxは本当にターミナルをscreen
またはscreen-256color
に設定したいのです
77 bloy 2012-03-10
ここで説明しているように、ターミナルオプションt_ut
をクリアして背景色消去(BCE)を無効にしてください(Vimで:set t_ut=
を実行してからControl+Lを押してターミナルの表示を更新してください)
63 sunaku 2013-03-07
私はこの投稿でより良い方法を見つけました。tmuxのエイリアスをtmux -2
にすると、シェルが256色のターミナルを使用しているとtmuxに強制的に仮定させることができます
18 Boogy 2013-05-25
これは、#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
Reload settings:
source ~/.bashrc # Ubuntu
$ source ~/.bash_profile # Mac
Mac用の.bashrcを設定します(tmuxで使われているので)
# File: ~/.bashrc (Mac)
source ~/.bash_profile
default-terminal “オプションを ~/.tmux.conf に設定します
# File: ~/.tmux.conf
set -g default-terminal "screen-256color" # Mac and Ubuntu
4 Munish 2016-01-03
それでも問題が解決しない場合は$TERM
が screen-256color
に設定されていても、tmux 内部では t_Co=8
オプションを使用するように vim が落ちることに気がつきました。私の回避策は vimrc のこのスニペットです
if exists("$TMUX")
set t_Co=256
set notermguicolors
else
set termguicolors
endif
$TMUX
変数はtmuxセッション内でのみ使用できます。この場合、vimが256色を使用できるようにしています。また、tmuxはトゥルーカラーをサポートしていないので、termguicolorsの設定を解除しています
2 lgalke 2019-07-15
手っ取り早い方法は、ターミナルで以下のように実行することです
export TERM=xterm-color
~/.bash_profile
などのプロファイルに追加して、起動時に常に設定されるようにしておけばいいのではないでしょうか
1 Peter Dietz 2015-02-27
私は gnome-terminal + tmux + vim で非常に似たような問題を抱えていましたが、それは特定のキーの組み合わせの問題にも拡張されていました。私はいくつかのものを組み合わせなければなりませんでした
# 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=
そして、それがキーと背景の仕事をしてくれました
1 P4C 2016-08-01
ちょうど今、同じ問題に直面しました。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 (色付きかどうか) を使用します。それ以外の場合はスクリーンにも同じことが言えます
冗長すぎるかもしれませんが、お分かりいただけたかと思います
0 evilguc 2014-11-27