web-dev-qa-db-ja.com

rxvt-unicodeターミナル内で実行されているtmuxターミナルでVimの色が正しく表示されない

私はDebian(Jessie)を使用しています。

私の〜/ .vimrcファイルには次のステートメントが含まれています。

colorscheme murphy

私の〜/ .Xresourcesファイルには、次のプロパティが含まれています。

URxvt.background: #000000
URxvt.foreground: #e0e0e0
URxvt.scrollBar: false
URxvt.borderless: true
URxvt.font:xft:Bitstream Vera Sans Mono:pixelsize=16

Rxvt-unicodeターミナル(vim)内でurxvtを起動すると、期待どおりの出力が得られます。

Vim running within rxvt-unicode

しかし、tmux内でurxvtを起動してから、tmuxターミナル内でvimを起動すると、色が明るすぎます。

Vim running within tmux running within rxvt-unicode

どうすればこれを修正できますか?

3
Susam Pal

この問題は、rxvt-unicode(urxvt)端末が88色のみをサポートしているのに対し、tmux端末は256色をサポートしているために発生します。

Urxvtからの出力:

susam@nifty:~$ tput colors
88

その結果、tmuxが起動すると、8色しか使用されません

susam@nifty:~$ tput colors
8

次のtmuxコマンドを〜/ .tmux.confに追加しても効果はありません。

set -g default-terminal screen-256color

〜/ .tmux.confのその行では、tmuxが起動すると、256色を使用しているようです。

susam@nifty:~$ tput colors
256

ただし、tmuxは256色を使用しているように見えますが、基盤となるrxvt-unicode(urxvt)端末は88色しかサポートしていないため、正しく表示できないため、役に立ちません。その結果、Vimはまだ明るすぎる色を表示します。

解決策:rxvt-unicode-256colorパッケージをインストールします。

256色をサポートするurxvtターミナルに付属するrxvt-unicode-256colorパッケージがDebianで利用可能です。 rxvt-unicode-256colorをインストールすると、問題が修正されました。

私が使用したコマンド:

aptitude update
aptitude purge rxvt-unicode
aptitude install rxvt-unicode-256color

色が少し変わって見えるようになりました。

enter image description here

しかし、経験はtmuxと一致しています。

enter image description here

3
Susam Pal

スーサムパルの答えは素晴らしく、私のために働いた。ただし、manイタリックで検索結果を強調表示したため、まだ小さな問題がありました。 tmux-FAQ の最後のエントリによると:

画面のterminfoの説明にはイタリックモードがなく、代わりに目立つモードがありますが、urxvtがイタリックに使用するのと同じエスケープシーケンスを使用しています。

ターミナルからこの問題を修正する方法は次のとおりです(FAQから採用):

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen-256color"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it-256color|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

次に、〜/ .tmux.confの次のtmux行を変更します。

set -g default-terminal screen-it-256color
0
mzuther