tmux 모드에서 vim colorscheme을 잃으십시오


228

iterm2를 실행 중이며 tmux 모드에있을 때 vim에서 설정 한 색상 구성표가 표시되지 않습니다. iterm에서 설정 한 색 구성표 만. 쉘에서 vim을 실행하면 색상 체계가 올바르게 나타납니다 .tmux 모드에있을 때만 해당됩니다.

:colorscheme molokaivim에있을 때 설정을 시도했지만 (아래 스크린 샷 참조) 변경되지 않습니다. 다시 iterm2의 기본 색 구성표가 남아 있습니다.

iterm 또는 tmux.conf에 대한 설정이 누락 되었습니까? 내 dotfles는 github에 있습니다.


31
당신은 어떻게됩니까 $ tmux -2?
romainl

4
그게 다야. -2 플래그는 무엇입니까?
tristen

11
tmux가 256 색으로 작동하도록합니다.
romainl

답변:


252

나는 같은 문제가 있었다. 차이점은 내가 solarize그때보다 사용하고 있다는 것 molokai입니다.

이 문제를 해결하기 위해 다음에 별칭을 설정했습니다 ~/.bashrc.

alias tmux="TERM=screen-256color-bce tmux"

그리고 default-terminal옵션을 설정하십시오 ~/.tmux.conf:

set -g default-terminal "xterm"

마지막으로 $ source ~/.bashrc새 별칭을로드하십시오.


20
tmux -2이것이 더 장황 하기 때문에 대신 이것을 사용합니다 .
thameera

97
개인적으로 나는 우분투 상자에 흩어져있는 OS X가 set -g default-terminal "screen-256color"아닌 작업 에 사용해야 했습니다 xterm. 이 사이트를 언급했습니다 : rhnh.net/2011/08/20/vim-and-tmux-on-osx
waffl

7
여기서 별명은 의미가 없습니다. tmux가 화면이나 tmux에서 실행되는 것처럼 가장합니다. tmux가 실행중인 터미널이 256 색을 지원한다고 가정하도록하려면 run tmux -2또는 tmux -2 attach(tmux는 터미널에 새 세션 또는 기존 세션을 연결할 때마다 결정합니다). 현명한 별칭은입니다 alias tmux='tmux -2'. 참조 TMUX, TERM와 256 색을 지원
질 'SO-정지 존재 악마'를

3
나는 확실하지는 않지만 TERM을 강제 실행하는 것이 좋지 않은 다른 답변 (참조를 찾을 수 없음)을 읽었습니다. tmux -2옵션이 set -g default-terminal "screen-256color"나를 위해 일 했기 때문에 그것이 나의 선택이 될 것입니다. 어쨌든 고마워!
marcelocra

5
.tmux.conf설정이 적용되지 않는 경우 모든 tmux 프로세스를 닫고 다시 시작하십시오. 에 set -g default-terminal "screen-256color"별칭을 설정 하지 않고도 할 수 있습니다 .bashrc. 사람들은 환경 변수 별칭과 같은 해결 방법을 수행한다고 생각합니다 .tmux.conf. 구성 후 모든 tmux 프로세스를 닫지 않기 때문 입니다.
Chev

74

@romainl이 위에서 언급했듯이 -2플래그 를 추가하여 tmux가 256 색상을 사용하도록 강요해야했습니다 .

$ tmux -2

alias tmux='tmux -2'내 bash_profile에 추가 했으므로 잊지 않습니다. :)


실제로, 그것은 필수적이지 않다 : 나는 사용하지 않는다 -2 tmux의 Vim에서 256 색을 사용합니다.
romainl

@romainl tmux가 터미널이 256 색을 갖는 것으로 감지하지 않는 경우에 필요합니다. 이는 매우 일반적입니다.
Gilles 'SO- 악의를 멈춰라'

1
@Gilles, Vim은 tmux의 기본값 TERM이 이므로 단말기가 256 색을 지원한다는 것을 감지하지 못합니다 screen. -2변경되지 않습니다 TERM아무것도 정보 Vim은 그 환경에서 얻을 무엇을 색상 관련 변경되지 않습니다 :echo &t_Co여전히 돌아갑니다 8. 정보가 제공되면 Vim은 올바른 일을합니다. 설정해야하는 유일한 일이 1.있는 터미널 에뮬레이터 TERMxterm-256color또는 동등한 같은 값 urxvt-unicode-256color과 2 TMUX의 기본 TERM으로 set -g default-terminal "screen-256color".
romainl

@romainl 대부분의 환경은로 TERM설정되어 xterm있지 xterm-256color않으므로 실행해야합니다.tmux -2 (또는 TERM=xterm-256color tmux, 또는 또는 같은 것을 달성하는 다른 방법을 변경해야합니다).
Gilles 'SO- 악마 그만해'

1
@Gilles, 문제는 -2가 256 색상 지원과 관련하여 Vim의 동작에 영향을 미치는 어떤 것도 달성하지 못한다는 것입니다. Vim에게 중요한 것은 TERM이고 체인의 끝에서 설정되어야하기 때문입니다. 터미널 에뮬레이터. 5 개의 호스트를 통해 SSH를 연결하고 터미널이 올바르게 설정된 경우 5 번째 호스트에서 Vim을 시작하면 256 색 TERM이 표시되고 그에 따라 작동합니다. 체인의 어느 지점에서 tmux를 사용하는 경우 -2는 tmux의 기본 TERM : 화면 -2인지 여부에 따라 환경이 8 색으로 제한되어 있기 때문에 Vim의 동작에 영향을주지 않습니다.
romainl

72

나는 위의 모든 솔루션을 시도했고 마침내 나를 위해 일한 것은 다음 줄을 넣는 것입니다 .tmux.conf.

set -g default-terminal "xterm-256color"

SSH를 통해 tmux를 사용하고 있으며 xterm을 사용하지 않고 일반 SSH 만 사용하더라도 이것이 효과가 있습니다.
armen.shimoon

나는 그것을 ssh 위에 사용하지 않았고 이것이 나를 위해 일한 유일한 대답이었다. OSX 10.9.5의 로컬 iTerm 세션.
Chev

이것은 나를 위해 작동합니다 (MacOS Mojave + iTerm2 / Alacritty), 감사합니다
Adrian Magdas

31

방금 혼란이 많은 이유를 발견했습니다. 나는 여기의 다른 사람들처럼 기본 터미널 설정을 적용하는 데 어려움을 겪고있었습니다. 백그라운드에서 tmux 세션이 있다는 것을 기억했습니다. 세션을 다시 연결하고 프로세스를 종료했으며 모든 tmux 프로세스를 닫았습니다. 다음에 tmux를 다시 시작하면 기본 터미널 설정 .tmux.conf이 적용되기 시작했습니다. 다른 사람들 도이 작업을 수행하고 있는지 모르겠지만 .tmux.conf파일을 수정하기 전에 모든 tmux 프로세스를 닫는 것이 좋습니다 .

나는 어떤을 수정하지 않고 내 로컬 컴퓨터 (iTerm2와 OSX 10.9.5)에 대한 작업에 내 설정을 가지고 .bashrc.bash_profile. 모든 나는 줄을 추가했다 않았다 set -g default-terminal "xterm-256color"까지를~/.tmux.conf 모든 tmux 프로세스에 하고 다시 시작하는 것입니다.

에 대한 수정없이 똑같은 방식으로 작동하도록 원격 설정 (ssh to Ubuntu 14.04)을 받았습니다 .bashrc. 원격 컴퓨터에 추가 set -g default-terminal "xterm-256color"하고 ~/.tmux.conf모든 원격 tmux 프로세스를 다시 시작했습니다.

echo $TERMtmux 세션 내에서 Vim이보고있는 것을 테스트 할 수 있습니다 . screen모든 tmux 프로세스를 다시 시작할 때까지 값으로 계속 말하면서 xterm-256color예상대로 반영 되었습니다.

희망이 도움이됩니다.


1
이 게시물 이후로 여러 운영 체제에서 확인했으며 모든 프로세스를 닫고 default-terminal옵션을 설정하는 .tmux.conf것은 지금까지 100 % 작동했습니다.
Chev

2
나도! 이 답변이 더 멀어지면 이것에 더 적은 시간을 보냈을 것입니다.
Sigfried

21

그래서 이것은 부실한 측면이지만 화면을 사용하면 종종 Home 및 End 키가 손상된다는 것을 언급 할 가치가 있습니다. 사용

export TERM="xterm-256color"

의 기능을 유지하고 색상 구성표 (또는 전력선)가 제대로 작동하도록해야합니다.


이것을 지적 해 주셔서 감사합니다. 나는 몰랐다. 지금까지 내가 본 것에서 데비안 derv에는 여전히 작동하는 것 같습니다. 내 방어에서 게시물은 OSX와 관련이있었습니다.
Jpatrick

tmux 1.9a, OSX 10.9.2, iTerm2 빌드 1.0.0.20130622 .bash_profile에서 TERM = "xterm-256color"내보내기 후 iterm을 xterm-256-color로 설정하면 효과가 있습니다. tmux 구성을 설정할 필요가 없습니다.
agenteo

14

우분투 터미널의 tmux와 Windows의 cygwin / mintty를 올바르게 표시하려면 vim이 필요했습니다. 나는 이와 같은 대답을 결합하여 작동하도록했습니다.

.bashrc에서 :

alias tmux="tmux -2"

.vimrc에서 :

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

이 질문에서 응답에 따라 이 빔 위키 페이지이 블록 커서 질문


민트 문제가 있었고 vim 구성을 추가하면 문제가 해결되었습니다. tmux별명 을 할 필요조차 없었습니다 .
trigoman

@trigoman, 나도 똑같이 .vimrc를 업데이트해야했습니다.
Masood Alam

이전 제안을 모두 시도했습니다. set t_Co=256.vimrc에 추가 되었고 수정되었습니다. tmux별칭 을 만들 필요가 없었습니다 .
Mike

11

위의 모든 지침을 시도했으며 가장 중요한 것은 .bashrc 파일에 다음 줄을 명시 적으로 추가해야한다는 것을 알았습니다.

export TERM=screen-256color

별칭 tmux = "TERM = screen-256color-bce tmux"가 작동하지 않는 이유를 모르겠습니다. Sierra 10.12.1을 사용합니다.


이것이 나를 위해 일한 것입니다. TERM의 일반 수출. +1
markovchain

10

누구나 24 비트 색상 지원이 필요한 경우 :

Tmux는 버전 2.2에서 24 비트 색상을 지원합니다. 터미널이 24 비트 색상을 지원하는 경우 터미널 재정의 설정에 터미널을 추가하십시오. 예를 들어

set -ga terminal-overrides ",xterm-256color:Tc"

내 환경 점검표 :

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (보고서 터미널 유형은 xterm-256color)
  • neovim 0.1.7 (: xterm-256color를 추가하여 24 비트 색상 사용).vimrc )
  • TMUX 2.3 (추가 set -ga terminal-overrides ",xterm-256color:Tc".tmux.conf)

.bashrc또는 에 추가 할 필요가 없습니다 .zshrc.

이것이 도움이되기를 바랍니다.


나를 위해 일한 것만. 정확히 무엇을합니까?
volk

6

이것이 Google의 첫 번째 결과이기 때문에 위의 어느 것도 도움이되지 않았기 때문에 누군가가 도움이 될 수 있도록 게시하려고했습니다.

에서 .vimrc:

set background=dark
set t_Co=256

HTH


이 두 줄을 테스트했으며 WSL-Windows10의 Vim에서 잘 작동합니다.
llinfeng

1
고마워 이 그놈 터미널과 우분투 18 일
Roymunson

4

.tmux.conf에 다음 줄을 추가하면 macOS Sierra 10.12.6에서 효과적이었습니다.

-g 기본 터미널 "screen-256color"설정


여기도 마찬가지입니다. 이 솔루션을 찾아 주셔서 감사합니다.
Adam Erickson

3

나와 같은 상황에 처해 있다면 위의 어느 것도 효과가 없습니다.

에서 .tmux.conf:

set -g default-terminal "xterm"

bash 설정에서 (아마도 .bashrc또는 .bash_profile) :

alias tmux="tmux -2"

그런 다음 다음을 실행하십시오.

killall tmux

tmux를 다시 시작하십시오.


3

당신이 사용하는 경우 tmuxinator또는 mux, 당신은 이러한 추가해야합니다 .bashrc또는 .zshrc:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

이로 인해 터미널에서 256 색을 사용해야합니다.

그런 다음 tmux, tmuxinatormux명령은 모든 작업 것이다.



2

이 문제를 해결해야했고 이전에 게시 된 모든 답변이 도움이되었지만 내 경우에는 문제를 해결하지 못했습니다.

내 에서 다음 줄 을 제거 하여 문제가 해결되었습니다 .vimrc.

set termguicolors

그것은 어쨌든 다른 지시에 어긋났다.

이제 내 이전 anwsers에서 다음 줄을 찾았습니다 .tmux.conf.

export TERM="screen-256color"

모두 멋지고 화려합니다.


2

줄을 제거 set termguicolors했지만 작동하지 않습니다. set notermguicolors대신 .vimrc작품 에서 설정 .


1

tmux 매뉴얼 페이지에서 다음과 같이 플래그를 추가하십시오.

tmux -2

-2플래그는 tmux가 256 색 모드에서 실행되도록합니다.

이것은 나를 위해 작동


1

내에서 다른 내보내기 TERM또는 기본 터미널을 설정 하려고 많은 운이 없었 습니다..tmux.conf .

tmux 내에서 vim 색상을 수정하는 솔루션은 다음을 추가했습니다 .tmux.conf.

set -g terminal-overrides 'xterm:colors=88'

TERM=xterm및 iTerm도 xterm으로 설정 했는데이 재정의가 필요한 이유 를 잘 모르겠지만 작동하는 것 같습니다.


0

Ubuntu bionic 18.04.4 LTS 및 tmux 2.6을 사용하고 있습니다. 나는 같은 문제가 있으며 이것을 단순히 .bashrc에 추가하여 해결할 수 있습니다

export TERM=screen-256color

그리고 물론 그것을 소싱하는 것을 잊지 마십시오. source ~/.bashrc

아니면 그냥 당신의 teminal을 다시 시작

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.