Vimでフルカラーサポートを有効にするにはどうすればよいですか?


98

素敵なVimカラースキームxoria256)があり、GVimで見栄えがしますがvim、Terminalでnormalを使用すると、カラースキームは部分的にしかサポートされません-たとえば、デフォルトの半透明のtrans子の背景色が使用されます。TerminalでVimカラースキームを忠実にレンダリングするにはどうすればよいですか?


4
デフォルトの配色でさえ、256色のほうが見栄えがよくなります。それがあなたの質問でなければ、私はそれを見つけられなかったでしょう。これがデフォルトです。
ミハイカポタ

回答:


79

GNOMEターミナルは256色をサポートしていますが、そのサポートを宣伝していません。以下を入力して、vimの自動検出をオーバーライドできます。

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif

〜/ .vimrcで。

:GNU画面を使用すると、256色のコードを喜んで食べて、基本的な16色に変換します。より良い修正方法は、screen / vimを起動する前にTERMをxterm-256colorに変更することです。

2017年の更新:十分に新しいVim(7.4.1799以降)と十分に高度なターミナルエミュレーター(十分に最近のバージョンのVTEに基づいたxterm、またはgnome-terminal)がある場合:set termguicolors、ターミナルvimはフルを使用しますを使用してvimテーマで定義されている24ビットカラーhighlight guifg=#rrggbb guibg=#rrggbb


1
これはうまくいきませんでした、私の端末はまだ子です!
デヴィッドシーゲル

私は何と言ってもいい-私がそうするとき、それは私のために働く:set t_Co=256 | colorscheme xoria256
マリウスゲドミナス

1
vimrcでgnome-terminalの存在をテストしてから、t_Co変数を適切に設定できます。例: if $COLORTERM == 'gnome-terminal'`set t_Co = 256` endif (コメントに複数行のコードブロックを追加する方法がわからないので、setステートメントの前後に改行を追加します)
Matt

3
gnome-terminalにはgnome-256colorを使用し、screenにはscreen-256colorを使用することをお勧めします。
-graywh

3
@trusktr google up CSApproxおよびCSExact vim拡張機能。
マリウスゲドミナス

44

より一般的な解決策は、用語タイプ「xterm-256color」をインストールすることです。10.04では、デフォルトでインストールされていると思います。以前は、「ncurses-term」をインストールして取得する必要がありました。

次に、.bashrcで次のような用語タイプを設定します。

if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then
    export TERM=xterm-256color
fi

特定のプログラムで256色のみを使用したい場合(他のプログラムを混乱させる可能性があります)、代わりに以下を使用します。

TERM=xterm-256color myprogram

そしておそらくそれをプログラムのエイリアスとして設定します。

次に、以下を使用して端末のカラー機能を確認します。

$ tput colors
256

vimに認識させるには、上記のvim設定が必要な場合があります。ほとんどのアプリケーションは、256色を自動的に認識します(使用できる場合)。

Emacsには、256色の方がはるかに優れたカラーテーマもあります。256色対応かどうかを確認するには:

M-x list-colors-display

256colors.plは、端末のすべての色を表示するPerlスクリプトです。


1
実際、gnome-256colorはgnome-terminalに対してより正確です。
-graywh

それはzshで動作しますか、私はbashを使用しませんか?
ヴィニットクマール

2
デイブ、私はそれが正しいかどうか100%確信していませんが、ここ にあなたのコマンドのワンライナーバージョンがあります:[[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM=xterm-256color。確認して、投稿に自由に追加してください。
JJD

@JJDは動作しますが;、すべてをワンライナーにするためにいつでも使用できます。
マーティンUeding

1
@ dave-jenningsスクリプトへのリンクが壊れています。
マーティンウエディング

36

以下の行を$HOME/.bashrc(できればファイルの最後の行に)含めてください:

export TERM="xterm-256color"

そして保存します。その後、gnome-terminalを再起動します。この変更は、vimだけでなく、すべてのターミナルアプリケーションで利用できます。

動作するかどうかを確認するには、次の小さなスクリプトを実行します

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <johannes@zellner.org>
# modified by mac@calmar.ws to fit my output needs
# modified by crncosta@carloscosta.org to fit my output needs

import sys
import os

def echo(msg):
    os.system('echo -n "' + str(msg) + '"')

def out(n):
    os.system("tput setab " + str(n) + "; echo -n " + ("\"% 4d\"" % n))
    os.system("tput setab 0")

# normal colors 1 - 16
os.system("tput setaf 16")
for n in range(8):
    out(n)
echo("\n")
for n in range(8, 16):
    out(n)

echo("\n")
echo("\n")

y=16
while y < 231:
    for z in range(0,6):
        out(y)
        y += 1

    echo("\n")


echo("\n")

for n in range(232, 256):
    out(n)
    if n == 237 or n == 243 or n == 249:
        echo("\n")

echo("\n")
os.system("tput setaf 7")
os.system("tput setab 0")

その後、次のようなものが表示されます(gnome-terminalのテーマによって異なります):

ターミナル


2
シェルコマンドのみが含まれているのに、なぜPythonでスクリプトを作成するのでしょうか。Bashにはループ、while、if、および関数があります;)
MestreLion

1

まあ、いつでもGvimをVimのように設定できます。〜/ .gvimrcファイルを作成して、これらのカスタマイズトリックを貼り付けるだけです。

set guioptions-=r  " no scrollbar on the right
set guioptions-=l  " no scrollbar on the left
set guioptions-=m  " no menu
set guioptions-=T  " no toolbar

私はこれがあなたの問題を解決するとは思わないが、誰が知っている;-)


0

背景に単色の不透明な色を使用するVimの個別のプロファイルを作成しました。Vimを使用するたびに手動で切り替えるだけです。より良い方法があるかどうかはわかりません。そう考えたいです。


2
if has("gui_running")vimrcで使用して、GUI固有のオプションを設定できます。
マット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.