tmux での vim 背景の 256 色サポート

colors tmux vim

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


それでも問題が解決しない場合は$TERMscreen-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


タイトルとURLをコピーしました