Vim에서 풀 컬러 지원을 어떻게 활성화합니까?


98

나는 Vim colorscheme ( xoria256 )이 있고 GVim에서 훌륭하게 보이지만 vimTerminal에서 normal 을 사용할 때 colorscheme은 부분적으로 만 지원됩니다 (예 : 기본 반투명 가지 배경색이 사용됩니다). 터미널에서 Vim 색상 구성표를 충실하게 렌더링하려면 어떻게해야합니까?


4
기본 색 구성표조차도 256 색으로 더 좋아 보입니다. 귀하의 질문이 아니었다면, 나는 그것을 찾지 못했을 것입니다. 이것이 기본값이어야합니다.
Mihai Capotă

답변:


79

그놈 터미널은 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
이 작동하지 않았다, 내 터미널은 여전히 ​​가지입니다!
David Siegel

내가 말할 수있는 것은 내가 할 때 나에게 효과적이다 :set t_Co=256 | colorscheme xoria256.
Marius Gedminas

1
vimrc에 gnome-terminal이 있는지 테스트 한 다음 t_Co 변수를 적절하게 설정할 수 있습니다. 예 : if $COLORTERM == 'gnome-terminal'`set t_Co = 256` endif (주석에 여러 줄의 코드 블록을 추가하는 방법을 잘 모르므로 set 문 앞뒤에 개행을 추가하십시오)
Matt

3
그놈 터미널에는 gnome-256color를, 스크린에는 screen-256color를 사용하는 것이 좋습니다.
graywh

3
@trusktr는 CSApprox 및 CSExact vim 확장 프로그램을 Google에 제공합니다.
Marius Gedminas

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을 인식하도록하려면 위의 vim 설정이 여전히 필요할 수 있습니다. 대부분의 응용 프로그램은 256 색을 자동으로 인식합니다 (사용할 수있는 경우).

이맥스는 또한 256 가지 색상으로 훨씬 더 나은 색상 테마를 가지고 있습니다. 256 색 실행 가능한지 확인하려면 다음을 수행하십시오.

M-x list-colors-display

256colors.pl 은 터미널의 모든 색상을 표시하는 Perl 스크립트입니다.


1
실제로 gnome-256color는 gnome-terminal에 더 적합합니다.
graywh

zsh에서 작동합니까, bash를 사용하지 않습니까?
Vinit Kumar

2
데이브, 나는 그것이 맞는지 100 % 확신하지 못하지만 다음은 명령 의 oneliner 버전 입니다 [[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM=xterm-256color. 게시물을 확인하고 자유롭게 추가하십시오.
JJD

@JJD 작동하지만 항상 ;모든 것을 하나의 라이너로 만드는 데 사용할 수 있습니다 .
Martin Ueding

1
@ dave-jennings 스크립트 링크가 끊어졌습니다.
Martin Ueding

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")

그 후에는 다음과 같은 내용이 표시됩니다 (그놈 터미널 테마에 따라 다름)

단말기


2
쉘 명령 만 포함하면 왜 Python으로 스크립트를 작성하는지 궁금합니다. Bash에는 루프, while, if 및 함수가 있습니다.;)
MestreLion

1

음, Vim처럼 보이도록 Gvim을 구성 할 수 있습니다. ~ / .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")GUI 특정 옵션을 설정 당신의 vimrc에.
Matt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.