カラースキームの背景がターミナルで正しくない


13

ソラライズされたカラースキームとパレットをインポートしました。私の端末には正しい色と背景があり、gvimには正しい色と背景がありますが、vimには間違った色の背景があります。テキストはすべて正しいですが、背景は真っ黒に見えます。

これは、ターミナル、GVim、およびVimの比較です

これが私の.vimrcです。

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

誰かがこれを引き起こしている可能性について何か提案があれば、私は大いに義務づけられるでしょう。デフォルトの端末でxubuntuを実行します。

また、ライトオプションを使用すると、Vimの背景が非常に黄色になります。


1
「[m] yターミナルには正しい色と背景があります」ということは、ターミナルのVimに関する特定のアドバイスに従ったということですか?
アンドリュー

2
@Andrewのアドバイスに従いました。ありがとう、結構です。
Oberdiear

@Oberdiear Andrewがリンクしているアドバイスでは、オプションを使用せずに、ソーラー化された色を使用するように端末をセットアップする必要があると説明していg:solarized_termcolors=256ます。端末でソラリゼーションカラーを使用することに満足している場合、この方法ははるかに効果的です。あなたの質問のテキストは、あなたが端末をソーラー色を使用するように設定したことを暗示してます(あなたが表示するスクリーンショットは私には見えませんが)、その場合、なぜあなたはg:solarized_termcolors=256設定を使用しているのですか?
リッチ

どの端末を使用していますか?私が持っているこのスクリプトをするためにgnome-terminal
wchargin

@Rich、パレットを正しくセットアップしていないと思います。あなた(または他の誰か)はXfceターミナル用に正しく設定する方法を知っていますか?
Oberdiear

回答:


10

これが起こっていると思う理由は2つあります。

  1. 使用しているsolarizedカラースキームは宣言しないctermfgctermbg、あなたがハイライトする機能のいずれかのために。この配色を試してみてください。端末とgvimの両方で基本的に同じように見えるはずです。その場合は、ctermfgとを宣言する配色の使用を検討する必要がありますctermbg

  2. 端末エミュレータが表示しようとしている色をサポートしていることを確認する必要がある場合があります。


この両方が同時に発生する可能性があることに注意してください。ただし、システムに関する詳細な情報なしにこれを診断することは困難です。


desert256は正常に動作しますが、私は大ファンではありません。私は信じていないTERM変数が間違っているが、私はそれを変更する方法は考えています。
Oberdiear

2
ncurses-termをインストールしました。その後、コマンドを実行しました。実行すると、すべてのテキストが灰色になり、背景が黒になります。
Oberdiear

1
export TERM=xterm+256color「color s」(複数)ではなく、また、私はする必要があることがあると信じてxterm-256color** + ** 256色」、NOT;私はsolarizedでそれを使用する方法について、具体的間違っている可能性がありますによると。この答え# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
エドワード・

export TERM=xterm+256colorOSXで取得zle-line-finish:echoti:1: no such terminfo capability: rmkx
-Xeoncross

私はこの正確な問題を抱えておりexport TERM=xterm+256colors、vim solarizedが端末の持っているものとして正確な背景色を検出して使用するのを助けました。
シャムハバラカダ

5

皆さん、素晴らしいニュースです。@Tomと@Richは私を正しい道に導いた。ここで提供されている解決策を見つけました。.vimrcをシンプルに設定します

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

これですべてが修正されるようです。フォントの例では色がそれほど明るくないように見えますが、それは私だけのことです。Solarized colorschemeを使用し、xfce4-terminalを使用したい人には、terminalrcと.vimrcを変更するだけで私の主な問題を解決できるようです。皆さん、助けてくれてありがとう!


1
set t_Covimrcに行を追加する必要はありません:Vimは端末からこの値を読み取ることができます(設定't_Co'は少しVimの貨物カルトのようです:オンラインで多くの人が解決しようとしている問題を本当に理解せずにそうすることをお勧めします。)
リッチ

「screen」と「tmux」とだけ言います。これらのツールは$ TERM変数を変更するため、vimは必要な情報を読み取ることができません。
NieDzejkob

@NieDzejkobターミナルマルチプレクサを使用しても、正しく設定されたターミナルを使用できます。
リッチ

4

これcolorschemeは端末との互換性の問題だと思います。プラグインcsaproxはこの問題の多くを奇跡的に解決します。

あらすじ:

端末Vimのカラースキームを見つけるのは困難です。ほとんどのカラースキームはGVimのみをサポートするように作成されており、ターミナルVimではまったく機能しません。

このプラグインは、ターミナルが88色または256色をサポートしている限り、GVimのみのカラースキームをターミナルVimで動作させるようにします。通常、これにはユーザーの操作は必要ありません(ただし、機能しない場合の対処方法についてはヘルプをご覧ください)。このプラグインを喜んでインストールした後、いつでも:colorschemeそれを使用して魔法をかけ、colorschemeを正しく動作させます。

プラグインへのリンク:


1
これは便利なプラグインですが、16色と256色の両方の端末で端末Vimで動作するようにソラリゼーションカラースキームが既にかなりの努力をしているため、ここでは役に立ちません。
リッチ

4

ソラリゼーション端末のVimカラースキームは、2つの異なる方法のいずれかで機能します。

  1. 16色モード:ソラライズには16色しか含まれないため、このモードでは、16色としてソラリゼーション色を使用するように端末を設定し、Vimカラースキームはこれらを使用します。たとえば、Vimのカラースキームは端末の色「1」を要求し、端末はこれを16進数の色#dc322fとして表示します。

  2. 256色パレットから16色に最も近いものを選択する256色モード。

前者の方法は作者(および私)に強く推奨されており、「端末には正しい色と背景がある」と述べているので、この方法を使用してもかまいません。

ただし、スクリーンショットからは、端末に正しい色が設定されていないようです。(白はソラリゼーションセットの色ではありません。スポイトしたことはありませんが、スクリーンショットの他のテキストの色はソラライズされた「バイオレット」(#6c71c4)のように見えません。)

ライン設定t_Cog:solarized_termcolorsvimrc * を削除し、端末の色を正しく設定すると、16色のソラリゼーションカラースキームが機能し始めることがわかります。

*これらのラインは、ソラライズされた(忠実度の低い)256色モードの使用に切り替わります。また、これは仕事、(私がいることを疑うべきで@Jubalは、BCEは、ここでの問題であることを示唆して正しいことを明示的にしない限り)が、16色モードであることが好ましいていない端末でsolarized使用したいです。


私はあなたが完全に正しい軌道に乗っていると信じています。パレットが正しくインストールされていないと思います。プロセスを説明していただけますか?@Rich、あなたのすべての助けに感謝します。
-Oberdiear

1
最初のリンクは現在無効になっているようです。
アコジ

@azoki知らせてくれてありがとう。Solarizedサイトは(再)建設中のようです。当分の間、githubリポジトリを指すようにリンクを変更しました。
リッチ

3

答えを見つけたようです。私はこれと同じ問題を抱えていて、上記の何も機能しませんでした。私のために働いたのは、sgerrandのではなく、論争のterminalrc使用でした

私の関連vimrcは単純です:

syntax enable
set background=dark
colorscheme solarized

それが誰かを助けることを願っています!


1

だからこれは私のために働くものです(私が使用したすべての端末-xterm、konsole、gnome-terminal、iterm2、roxterm-LinuxとOS Xの両方で、gvimとmacvimでも):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif

これにより、t_Co = 16の設定と同様の問題が発生しました。パレットに問題があることはかなり確信していますが、まだ理解できていません。
Oberdiear

どの端末エミュレータを使用していますか?正しく思い出すと、konsoleのビルトインソーラー構成は完全に使用可能ではなく、元のソーラーリポジトリの設定を使用する必要があります…
Jubal

Xfceターミナルを使用します。
Oberdiear

ソラライズされたxfce-terminal gitリポジトリからではなく、端末のプリファレンスからソラライズされたプリセットを使用しながら、TERMをxterm-256colorに強制するようにしてください。これは、上記のBCEハックと一緒に、xfce4-terminalのトリックを行いました。
ジュバル

(基礎となるターミナルエミュレーションフォントレンダリングにはまだ怪しいものがあります。Linuxで昔ながらのxtermに戻った理由を思い出したと思います...)
Jubal

0

これは仕事をするのが苦痛でした(Linux MintでターミナルVimを使用しています)が、残念なことに、私がやったすべての詳細を書き留めていませんでした。ここに私のvimrcの関連セクションがあります:

syntax enable
set background=dark
set t_Co=16
colo solarized

GitHubでこのプロジェクトをチェックする価値もあります


set t_Co = 16を使用すると、色が予想とは根本的に異なります。また、デフォルトのXubuntuターミナルであるXfce-Terminalを使用しています。
Oberdiear

@Oberdiear t_Co = 16の設定がその方法で色に影響する場合(g:solarized_termcolors変数が未設定の場合)、端末の色がsolarizedを使用するように正しく設定されていないことを意味します。端末の色をどのように設定していますか?
リッチ

0

私のために働いたのは、設定のこの部分を削除することでした

if has('gui_running')
   set background=dark
else
   set background=dark
endif

xfce4-terminalを実行しています


0

私もこの問題を抱えていましたxfce-terminal

少し調査した結果、このバグを発見し$TERMました。XFCEターミナルで設定したものはすべて黙って無視されます。

これは実際には、XFCEターミナル(まだGTK + 2ベース)が使用している、基礎となる(メンテナンスされていない)古いVTEライブラリのバグだと思います。新しいVTEライブラリを暗黙的に使用するGTK + 3ターミナルに切り替えると、問題が解決しました。

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