web-dev-qa-db-ja.com

背景色が変わらないvimカラースキーム

私はネット上で見たvimの様々なカラースキームを適用しようとします。どのスキームを選択しても、適用されたスキームのスクリーンショットでは背景に色を付ける必要があることが示されていますが、背景は白のままです。

一部のスキームでは、背景の一部の色が変わりますが、テキストを含む行の右側のスペースはまだ白のままです。

MacでVim 7.2を使用しています。 GUI以外のアプリケーションをいじり始めたばかりなので、箱から出してすぐにすべてが正常に動作するはずです。

端末ウィンドウの全体的な設定は、それと関係がありますか?

Macvimを実行すると、すべてが正常に見えます。ターミナルからvimを起動するときのみ、物事は奇妙に見えます。

36
Vegar

.vimrcにこれがあり、PuTTYの使用中にこの問題を解決しました。

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

.chemで設定されたものと同じものをオーバーライドする必要があるため、.vimrcのctermbg設定の前にカラースキームをロードすることが重要です。これは、Vimの実行中にカラースキームを切り替えられず、動作することを期待できないことも意味します。

43
cptloop

最初の回答とは大きく異なり、実際の問題を指している可能性があるため、2番目の回答を追加します。

ここでカラースキームの実際のウェブサイトを見ると: Molokai website

あなたとよく似た質問が表示されます。以下に答えを示します。コマンド:set t_Co=256 vimrcで、問題を修正するかどうかを確認します。

「-256色に対応したコンソール端末を使用していることを確認してください。すべてのコンソール端末で使用できるわけではありません(特にMacの場合)。vimrcファイルで「set t_Co = 256」 。-Windowsコンソールは完全にサポートされていません。16色しかサポートしていないため、混乱します」

28
Herbert Sitz

Linuxでは、export TERM=xterm-256color.bashrcがありました。これにより、vimは次のようになりました(set t_Co=256を設定した後):

Vim looks with molokai theme before fixing TERM variable

.bashrcからその行を削除して新しいターミナルを開いたとき(exec bashはそれをしませんでした)これは私が得るものです:

Vim looks with molokai theme after fixing TERM variable

14
DavidG

端末は通常256色に制限されていますが、GUIはデスクトップ環境の色深度(通常2 ^ 32)によってのみ制限されています。

そのため、多くのvimカラースキームが利用できる場合でも、暗黙的にGUI用に設計されていることが多く、ターミナルバージョンでは機能しません。

vim.org の配色を見ると、GUIまたは256に言及していることが多いため、コンテキストに応じてどちらを使用するかを選択する必要があります。

GUIスキームを端末に変換するには、次のプラグインを使用できます: CSApprox

コンテキストに応じて異なるカラースキームを使用することもできます。次を.vimrcに追加します。

if has("gui_running")  
    colorscheme [using any color you want]  
else  
    colorscheme [using 256 colors]  
endif  
7
Xavier T.

この問題は、colorschemeによるデフォルトの色の変更方法にあると思います。単にデフォルトを設定するいくつかのカラースキームを見てきました:

set background=light

または

set background=dark

それらの制限がわからない。これらは端末で動作するとは思わない。

いずれの場合でも、「通常」の強調表示を使用して、端末の背景を手動で設定できるはずです。 colorschemeファイルのほとんどの「hi」コマンドの前の場所に挿入すると、それらが機能するデフォルトが提供されます。例えば:

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White

Ctermfg(カラーターミナルの前景)とctermbg(カラーターミナルの背景)を希望の色(または、colorschemeで表示されるはずだったが現在表示されていない色)に変更します。 (ただし、colorschemeにすでにhi Normalの設定がある場合、これはおそらく問題ではありません。)

Ctermbgとctermfgには色名を入力できますが、かなり限られた数しかないと思います:ブラックダークブルーダークグリーンダークシアンダークレッドダークマゼンタブラウン、ダークイエローライトグレー、ライトグレー、グレー、グレーダークグレー、ダークグレーブルー、ライトブルーグリーン、ライトグリーンシアン、ライトシアンレッド、LightRedマゼンタ、LightMagentaイエロー、LightYellowホワイト

そうでない場合は、色名の代わりに0〜255の数字を使用できるはずです。または、このスクリプトは大まかなアイデアを提供し、より多くの色名を使用するように設定する方法を確認できます: Vim script with color settings

また、ctermで使用するためにgui用に作成されたカラースキームを使用または変換するのに役立つ多くのスクリプトがあります。例えば。、:

ctermのカラースキームサポート

Does the overall settings for the terminal window have something to do with it?

たぶん、しかし、適切に書かれたVimカラースキームは、あなたが行ったターミナル設定を上書きするだろうと確信しています。少なくとも彼らはWindowsとUbuntuで私のためにやってくれます。 。 。

5
Herbert Sitz

私は同じ問題を抱えていましたが、この質問に対する答えは実際には3つあり、3つのうち2つだけを修正するだけでは十分ではないことがわかりました。次のものが必要です。

  1. 端末での256色のサポート-デフォルト設定のPuTTYにはこれがあります

  2. Vimは端末が256色に対応していることを認識しなければなりません:.vimrcの "set t_Co = 256"がそれを行います

  3. カラースキームは、gui *-バージョンだけでなく、ハイライト用のctermbgおよびctermfg属性を持つカラーターミナルをサポートする必要があります。 http://www.vim.org/scripts/script.php?script_id=2682 はこれらを自動的に提供できるはずであり、CSApprox私が最も確実に使用していますが、+ guiが必要です-コンパイル済みのVimまたは最新の十分なVimバージョン(7.3以降)。

3番目の要件は、最も一般的に見逃されている要件のようです。私は今朝、このテーマに関する自分の手探りに関する短い記事を書きました: http://codeandlife.com/2013/09/22/vim-colorschemes-with-PuTTY-aka-gui-vs-xterm- color256 /

さまざまな設定を試しているときに私に起こった最後の落とし穴は、色が機能したときに、テキストのある画面の領域のみが適切な背景色を持つことでした。 PuTTYターミナルの設定「画面の消去に背景色を使用する」を再確認すると、最終的な問題が修正されました。

4
jokkebk

端末ウィンドウの全体的な設定は、それと関係がありますか?

はい、ターミナルパラメータはvimパラメータを上書きします(少なくともOSXおよびiTermでは)。たとえば、/ Users/[username] /。bashrcに次のスクリプトがあります

setBackground() {  
  osascript -e "tell application \"iTerm\"  
    set current_terminal to (current terminal)  
    tell current_terminal  
      set current_session to (current session)  
      tell current_session  
        set background color to $1  
      end tell  
    end tell  
  end tell"  
}  

vim() {
       (setBackground "{65025,65025,65025}" &)
       (exec vim $*)
}

上記はvimを実行する前に端末のvimコマンドを再マップして背景色の変更を実行します。背景色関数はapplescriptです(どこかからスクリプトをコピーしました...)。 iTermで機能します。ターミナルで動作するようにこれを調整できると信じています(Apple製品+ Appleスクリプト->動作するはずです)。

br、
ジュハ

3
Juha

これは私のために背景を切り替えるのに役立ちます:

colorscheme hemisu
function! g:ToggleBackground()
  if &background != 'dark'
    set background=dark
  else
    set background=light
    colorscheme hemisu
  endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>

また、明るい背景をctermbg=231のようなものに設定してみてください。そうすれば、tmuxはそれをより良く処理します。

0
vim4life

Vim through [〜#〜] ssh [〜#〜]を使用する場合、このルールを使用します。

  1. ローカル.bashrcに追加:

    export TERM=xterm-256color
    
  2. .bashrcからTERMの定義を削除します。

(ローカルおよびリモート)の両方で同じ.bashrcを使用する場合、一時環境変数を使用し、neverTERMをグローバルに設定します。

alias color-ssh='TERM=xterm-256color ssh user@Host'
0
DenisKolodin