web-dev-qa-db-ja.com

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

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

97
David Siegel

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以降)と十分に高度なターミナルエミュレーター(xterm、または十分に最近のバージョンのVTEに基づくgnome-terminal)がある場合、 :set termguicolorsと端末vimは、highlight guifg=#rrggbb guibg=#rrggbbを使用してvimテーマで定義されている完全な24ビットカラーを使用できます。

78
Marius Gedminas

より一般的な解決策は、用語タイプ「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スクリプトです。

44
Dave Jennings

$HOME/.bashrcに次の行を含めるだけです(ファイルの最後の行が望ましい)。

export TERM="xterm-256color"

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

動作するかどうかを確認するには、この小さな script を実行します。

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <[email protected]>
# modified by [email protected] to fit my output needs
# modified by [email protected] 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のテーマによって異なります):

terminal

36
crncosta

さて、いつでも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

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

1
wassimans

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

0
DLH