환경:
- 페도라 25 (4.9.12-200.fc25.x86_64)
- 그놈 터미널 3.22.1 VTE 버전 0.46.1 + GNUTLS 사용
- VIM-Vi IMproved 8.0 (2016 년 12 월 12 일, 컴파일 2 월 22 2017 16:26:11)
- tmux 2.2
최근에 tmux를 사용하기 시작했으며 Vim의 색상이 tmux의 내부 또는 외부에서 실행 중인지에 따라 변하는 것을 관찰했습니다. 아래는 Git diff를 보면서 tmux의 외부 (왼쪽) 및 내부 (오른쪽) Vim의 스크린 샷입니다.
내 TERM
변수는
- TMux 외부 :
xterm-256color
- TMux 내부 :
screen-256color
Vim은 다음과 같은 터미널 유형을 예상대로보고합니다 :set term?
.
- TMux 외부 :
term=xterm-256color
- TMux 내부 :
term=screen-256color
Vim은 두 인스턴스가 모두 256 색 모드 (를 통해 :set t_Co?
) 로 실행되고 있다고보고합니다 .
- TMux 외부 :
t_Co=256
- TMux 내부 :
t_Co=256
tmux 내에서 Vim을 256 색 모드로 실행하는 것과 관련하여 비슷한 질문이 많이 있지만 (내가 찾은 가장 좋은 대답은 here ) 위의 정보가 있다고해서 그것이 내 문제라고 생각하지 않습니다.
터미널 유형이 다음과 같이 Vim을 실행하면 tmux 외부에서 문제를 복제 할 수 있습니다 screen-256color
.
$ TERM=screen-256color vim
따라서 색상 차이를 유발하는 터미널 기능 xterm-256color
과 screen-256color
터미널 기능 사이에 약간의 차이가 있다고 생각 합니다. 제목에서 제기 된 질문은 다음과 같습니다. 터미널 기능에서 Vim 색상이 다른 이유는 무엇입니까? 나는 :set termcap
tmux의 내부와 외부의 차이점을 보았지만 실제로 어떤 변수가 행동의 차이를 일으키는 지 궁금합니다.
이전 질문 과 상관없이 tmux 내부 또는 외부에서 Vim 색상을 일관성있게 유지할 수 있습니까? 내가 시도한 것은 다음과 같습니다.
- tmux가 사용하는 기본 터미널
~/.tmux.conf
을 다양한 값 으로 명시 적으로 설정 (일부 tmux FAQ 의 조언과 반대 ) :
-g 기본 터미널 "screen-256color"설정 -g 기본 터미널 "xterm-256color"설정 -g 기본 터미널 "screen.xterm-256color"설정 -g 기본 터미널 "tmux-256color"설정
- 를 사용하여 tmux를 시작합니다
tmux -2
.
모든 경우에 Vim은 tmux 내부에서 다른 색상을 계속 표시했습니다.
답변
tmux
“기본 색상”구성표를 사용할지 여부를 결정 하는 terminfo 기능 bce
( 백색 지우기)을 지원하지 않습니다 vim
.
그 특징은 tmux
몇 번 언급되었습니다-
답변
나는 전에 비슷한 문제가 있었다. Vim의 파란색 주석은 읽기 어려웠습니다. 에서 .tmux.conf
나는이 설정 :
set -g default-terminal "screen-256color"
그리고 .vimrc
:
set background=dark
이제 다음과 같이 보이고 그놈 터미널과 Cygwin에서 모두 작동합니다.
답변
에서 Vim이 출력 한 색상에 대한 @egmont의 분석 덕분에 TERM=screen-256color
Vim이 두 가지 시나리오에서 사용하는 색상 구성표를보고 영감을 받았습니다.
Vim default
은 두 경우 모두 색 구성표를 사용한다고보고합니다 . default
Fedora 25 ( /usr/share/vim/vim80/colors/default.vim
) 의 색 구성표 가 실제로 표시되는 색과 일치하지 않는 것 같아서 이상하다고 생각했습니다 TERM=xterm-256color
. :colorscheme default
when을 사용하여 색상 구성표를 명시 적으로 설정하면 TERM=xterm-256color
Vim의 모양이 when로 변경됩니다 TERM=screen-256color
. Vim을 처음 시작할 때의 색상으로 되돌리려면 ron
색상 구성표 를 사용해야했습니다 . 진행!
Vim에서 색상 구성표를 사용한다고보고 할 때 Ask Ubuntu 답변 을 찾았습니다. default
반드시 default.vim
테마별 색상 구성표를 의미하는 것은 아닙니다 . 대답에서 알 수 있듯이 어두운 테마 (사용중인) ron
는 위에서 발견 한 것처럼 색 구성표에 해당합니다 . (이 게시물은 우분투와 관련이 있지만 OP가 그놈을 사용하고 있다고 가정합니다.)
또한 내가 가지고있는 것과 동일한 문제를 설명하는 것으로 보이는 또 다른 질문 을 발견했습니다 . 이 질문을 게시하기 전에 검색하는 동안 문제가 발생했지만 어떤 이유로 색상 구성표가 관련성이 있다고 생각하지 않았습니다.
나는 @LapshinDmitry가 그의 대답에서 한 일을하고 colorscheme ron
내 ~/.vimrc
파일에 명시 적으로 설정 했습니다 . 이제 TMux 내부 또는 외부에서 Vim을 시작하든 색상이 동일하게 나타납니다. 유일한 단점은 바탕 화면 테마를 어두운 풍미에서 밝은 풍미로 변경하면 Vim이 “기본”밝은 테마 색 구성표로 자동 전환되지 않는 것 peachpuff
입니다. 테마를 바꿀 가능성이 거의 없기 때문에 그와 함께 살 수 있습니다.
~/.vimrc
해결책이 아닌 해결 방법 에서 색상 구성표를 명시 적으로 설정하는 것을 고려하기 때문에이 대답을 수락하지 않습니다 . Vim이의 값에 따라 다른 “기본”색 구성표를로드하는 이유를 누군가가 설명 할 수 있다면 TERM
근본 원인을 이해하는 데 더 관심이 있기 때문에 그 대답을 기꺼이 받아 들일 것입니다. Vim이 두 terminfo 파일 사이의 터미널 기능을 해석하는 방법과 관련이 있다고 생각합니다.
답변
내 TERM 변수는 외부 TMux입니다 : xterm-256color 내부 TMux : screen-256color
맞고 나를 위해 일하고 있습니다. 다른 터미널 (urxvt를 사용)로 시도하여 그놈 터미널이 문제인지 확인하십시오. 의
또한 COLORTERM
(광산이로 설정 됨 rxvt
) 및 을 확인하십시오 unset TERMCAP
.
답변
의심 할 여지없이 구글이 내 다음 컴퓨터를 설정했을 때 내 자신의 참조를 위해.
- Vim8 / 네오 빔
- 윈도우 10
- 힘내 배쉬
- 툭스 2.7
필요한 바이너리와 DLL을 Git bash의 PATH로 가져 오려면 다음 지시 사항을 사용하십시오.
다음 명령을 사용하여 구성하십시오.
echo 'set -g default-terminal "screen.xterm-256color"' > ~/.tmux.conf
tmux -2u