tmuxモードでvimのcolorchemeを失う


228

iterm2を実行していますが、tmuxモードの場合、vimで設定したカラースキームが表示されません。itermで設定した配色のみ。シェルからvimを実行した場合、colorschemeは正しく表示されます。これは、tmuxモードの場合のみです。

私は:colorscheme molokaivim(下のスクリーンショットを参照)で設定を試みましたが、変更されません-繰り返しになりますが、iterm2のデフォルトのカラースキームはそのままです。

itermまたはtmux.confの設定が不足していますか?私のdotflesはここのgithubにあります。


31
するとどうなります$ tmux -2か?
romainl 2012

4
それは完全にそれでした。-2フラグとは何ですか?
tristen

11
tmuxを強制的に256色で動作させます。
romainl 2012

回答:


252

私も同じ問題を抱えていました。違いは私がsolarizeむしろ使っていたということですmolokai

この問題を修正するために、次の場所にエイリアスを設定しました~/.bashrc

alias tmux="TERM=screen-256color-bce tmux"

default-terminalオプションを設定します~/.tmux.conf

set -g default-terminal "xterm"

最後に、$ source ~/.bashrc新しいエイリアスをロードします。


20
tmux -2これはより冗長なので、代わりにこれを使用します。
thameera 2013

97
個人的には、OS X set -g default-terminal "screen-256color"ではなくxterm、Ubuntuボックスを使用して作業する必要がありました。このサイトを参照しました:rhnh.net/2011/08/20/vim-and-tmux-on-osx
waffl

7
ここでのエイリアスは意味がありません:tmuxがscreenまたはtmuxの内部で実行されているように見せかけていますが、これはほとんどありません。tmuxを実行している端末が256色をサポートしていると想定するには、tmux -2またはを実行しますtmux -2 attach(または、tmuxは、新規または既存のセッションを端末に接続するたびに決定します)。賢明なエイリアスはでしょうalias tmux='tmux -2'tmux、TERM、256色のサポート
Gilles 'SO- stop

3
確かなことはわかりませんが、TERMを強制するのは良い習慣ではないことを他の回答で読みました(参照が見つかりませんでした)。tmux -2オプションset -g default-terminal "screen-256color"は私のために働いたので、それは私の選択になります。とにかくありがとう!
marcelocra 2014

5
.tmux.conf設定が有効になっていない場合は、すべての tmuxプロセスを閉じ再起動します。でset -g default-terminal "screen-256color"エイリアスを設定せずに実行できます.bashrc。構成後にすべてのtmuxプロセスを閉じていないため、環境変数のエイリアスのような回避策を講じていると思います.tmux.conf
Chev、2014年

74

@romainlが前述したように、-2フラグを追加してtmuxに256色を使用させる必要があります。

$ tmux -2

alias tmux='tmux -2'はbash_profile に追加したので、忘れないでください:)


実際、これは必須ではありません。私は使用しません-2が、tmuxのVimで256色を使用しています。
romainl 2012

@romainl tmuxが、ごく一般的な256色の端末を検出しない場合に必要です。
Gilles「SO-邪悪なことをやめよう」14年

1
@ Gilles、tmuxのデフォルトTERMはなので、Vimは端末が256色をサポートしていることを検出しませんscreen。Vimが環境から取得する情報に関連する色に関連する-2変更TERMや変更はありません。:echo &t_Coそれでもが返されます8。与えられた情報により、Vimは正しいことを行います。設定しなければならない唯一のものは1です。あなたの端末エミュレータのTERMxterm-256colorまたは同等のような値urxvt-unicode-256colorと2 tmuxはのデフォルトTERMを持ちますset -g default-terminal "screen-256color"
romainl 2014年

@romainlほとんどの環境では、にTERM設定されていますがxterm、そうxterm-256colorではないため、実行する必要がありますtmux -2(またはTERM=xterm-256color tmux、termcapまたは同じことを実行する他の方法を変更する必要があります)。
Gilles「SO-邪悪なことをやめなさい」2014

1
@ギレス、問題は-2が256色サポートに関するVimの動作に影響を与えることを何も実行しないことです。Vimにとって重要なのはTERMであり、それがチェーンの最後に設定されるためです:端末エミュレータ。5つのホストを介してSSH接続し、端末が正しく設定されている場合、5番目のホストで起動したVimは256色のTERMを認識し、それに応じて動作します。チェーンの任意のポイントでtmuxを使用する場合、tmuxのデフォルトのTERM:screen、-2などにより、環境が8色に制限されるため、-2はVimの動作にまったく影響しません。
romainl 2014年

72

私は上記のすべての解決策を試しましたが、最終的に私のために働いたのは次の行を入れることです.tmux.conf

set -g default-terminal "xterm-256color"

私はSSH経由でtmuxを使用しています。これは、xtermを使用せず、通常のSSHを使用している場合でも機能します。
armen.shimoon 2014

私はsshでそれを使用していませんでした。これが私にとって有効な唯一の答えでした。OSX 10.9.5のローカルiTermセッション。
CHEV

これは私(MacOS Mojave + iTerm2 / Alacritty)で機能します。ありがとう
Adrian

31

私はなぜ私が多くの混乱を抱えていたのかを発見しました。私は、他の人たちと同様に、デフォルトのターミナル設定を有効にするのに苦労していました。バックグラウンドでtmuxセッションがあったことを思い出しました。セッションを再接続し、プロセスを閉じ、すべてのtmuxプロセスを閉じました。次にtmuxを再起動したときに、デフォルトのターミナル設定.tmux.confが有効になり始めました。他の人もこれを行っているかどうかはわかりませんが、変更する前にすべてのtmuxプロセスを閉じることをお勧めします.tmux.confファイルをます。

.bashrcまたはを変更せずに、ローカルマシン(OSX 10.9.5とiTerm2)で動作するようにセットアップしました.bash_profile。行set -g default-terminal "xterm-256color"を追加しただけです~/.tmux.confすべてのtmuxプロセスにて再起動。

リモート設定(sshからUbuntu 14.04)をまったく変更せずにまったく同じように動作させました.bashrc。私は単にリモートマシンにを追加set -g default-terminal "xterm-256color"~/.tmux.conf、すべてのリモートtmuxプロセスを再起動しました。

echo $TERMtmuxセッション内からVimが何を見ているかをテストできます。screen私がすべてのtmuxプロセスを再起動するまで、それは値として言っていましたが、その時点でxterm-256color期待どおりに反映されました。

お役に立てば幸いです。


1
今回の投稿以降、さらにいくつかのオペレーティングシステムで確認しました。これまでのところ、すべてのプロセスを閉じてdefault-terminalオプションを設定することで、.tmux.conf100%の時間で問題が解決しました。
Chev

2
私も!この答えがもっと上なら、私はこれに費やす時間を減らしたでしょう。
Sigfried 2018年

21

したがって、これは少し古くなった面ですが、画面を使用するとHomeキーとEndキーが壊れることが多いことを言及する価値があります。使用する

export TERM="xterm-256color"

inはこれらの機能を維持し、配色(または電力線)が正常に機能するようにします。


これを指摘してくれてありがとう。知らなかった。これまでのところ、Debianのdervで動作するようです。私の弁護では、この投稿はOSXに関するものでした。
Jpatrick 2013

tmux 1.9a、OSX 10.9.2、iTerm2ビルド1.0.0.20130622 .bash_profileのTERM = "xterm-256color"をエクスポートし、itermをxterm-256-colorに設定するとうまくいきました。tmux構成を設定する必要はありません。
agenteo 2014年

14

Ubuntuのターミナルでtmuxを、Windowsでcygwin / minttyを使用してvimを正しく表示する必要がありました。このような答えを組み合わせることでうまくいきました。

.bashrcの場合:

alias tmux="tmux -2"

.vimrc内:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

この質問、このVim wikiページ、およびこのブロックカーソルの質問からの回答に基づく


私はminttyに問題があり、vim構成を追加すると修正されました。tmuxエイリアスを作成する必要すらありませんでした。
トリゴマン

@trigoman、私も同じですが、私は.vimrcを更新する必要がありました。
Masood Alam

以前の提案をすべて試しました。set t_Co=256.vimrcに追加しただけで修正されました。tmuxエイリアスを作成する必要はありませんでした。
Mike

11

上記のすべての手順を試しましたが、最も重要なことは、.bashrcファイルに次の行を明示的に追加する必要があることです。

export TERM=screen-256color

エイリアスtmux = "TERM = screen-256color-bce tmux"が機能しない理由がわかりません。私はSierra 10.12.1。を使用しています。


これは私のために働いたものです。TERMの単純なエクスポート。+1
マルコフチェイン

10

誰でも24ビットカラーのサポートが必要な場合:

Tmuxは、バージョン2.2以降、24ビットカラーをサポートしています。端末が24ビットカラーをサポートしている場合は、端末をterminal-overrides設定に追加します。例えば、

set -ga terminal-overrides ",xterm-256color:Tc"

私の環境チェックリスト:

  • macOSシエラ10.12.3
  • iTerm2 3.0.14(レポート端末タイプは xterm-256color
  • neovim 0.1.7(以下を追加して24ビットカラーを有効にします:xterm-256colorto.vimrc
  • tmuxの2.3(追加set -ga terminal-overrides ",xterm-256color:Tc"します.tmux.conf

他には何も私はで追加する必要がありません.bashrc.zshrc

これが役立つことを願っています。


私のために働いた唯一のもの。これは正確に何をしますか?
ヴォルク

6

これはGoogleでの最初の結果であり、上記のどれも役に立たなかったため、誰かが役立つと思うようにこれを投稿したかったので

.vimrc

set background=dark
set t_Co=256

HTH


これら2つの行をテストしたところ、WSL-Windows10上のVimでうまく動作しました。
llinfeng 2018年

1
どうもありがとう。これはgnome-terminalを備えたUbuntu 18で動作しました
Roymunson '13年


3

私と同じ状況にある場合、上記のどれもうまくいかなかったと思います。これを試してください:

.tmux.conf

set -g default-terminal "xterm"

bash設定(多分.bashrcまたは.bash_profile):

alias tmux="tmux -2"

次に実行します:

killall tmux

tmuxを再起動します


3

tmuxinatorまたはを使用する場合mux、これらを.bashrcまたはに追加する必要があります.zshrc

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

これらは端末で256色を使用することを強制します。

次にtmuxtmuxinatorおよびmuxコマンドはすべて動作します。



2

この問題に対処する必要があり、以前に投稿された回答はすべて役に立ちましたが、私の場合、問題は解決しませんでした。

私の次の行を削除することで問題が解決しました.vimrc

set termguicolors

とにかく、それは別の指示で修正されました。

今、私の前のanwsersで次の行が見つかりました.tmux.conf

export TERM="screen-256color"

すべてが素敵でカラフルです。



1

tmuxのmanページから、次のようにフラグを追加します。

tmux -2

この-2フラグは、tmuxを強制的に256色モードで実行します。

これは私のために働く


1

私は別のものをエクスポートしTERMたり、デフォルトのターミナルを設定したりするのにあまり運がありませんでした.tmux.conf

tmux内のvim色を修正するための私のソリューションは、次の行を追加しました.tmux.conf

set -g terminal-overrides 'xterm:colors=88'

TERM=xtermと私がitermもxtermに設定しているのに、なぜこのオーバーライドが必要だったのかはわかりませんが、うまくいくようです。


0

Ubuntu bionic 18.04.4 LTSとtmux 2.6を使用しています。私は同じ問題を抱えており、これを.bashrcに追加するだけで解決できます

export TERM=screen-256color

そしてもちろんそれを調達することを忘れないでください。 source ~/.bashrc

または、テミナルを再起動します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.