Terminal
為什麼 Vim 顏色在 tmux 內部和外部看起來不同?
環境:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- GNOME 終端 3.22.1 使用 VTE 版本 0.46.1 +GNUTLS
- VIM - Vi IMproved 8.0(2016 年 9 月 12 日,2017 年 2 月 22 日 16:26:11 編譯)
- 多路復用器 2.2
我最近開始使用 tmux 並觀察到 Vim 中的顏色會根據我是在 tmux 內部還是外部執行而變化。下面是 Vim 在查看 Git diff 時在 tmux 外部(左)和內部(右)的螢幕截圖:
我的
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
關於讓 Vim 在 tmux 中以 256 色模式執行有很多類似的問題(我找到的最佳答案是在這裡),但鑑於上述資訊,我認為這不是我的問題。
如果我在終端類型設置為以下的情況下執行 Vim,我可以在 tmux 之外複製問題
screen-256color
:$ TERM=screen-256color vim
所以這讓我相信導致顏色差異的終端功能
xterm-256color
和終端功能之間存在一些差異。screen-256color
這就引出了標題中提出的問題:終端功能中具體是什麼導致 Vim 顏色不同? 我看到了在 tmux 內部和外部執行之間的差異:set termcap
,但我很好奇哪些變數實際上會導致行為差異。與上一個問題無關,在 tmux 內部或外部執行時是否可以讓 Vim 顏色保持一致? 我嘗試過的一些事情包括:
- 將 tmux 使用的預設終端顯式設置
~/.tmux.conf
為各種值(有些違反 tmux FAQ的建議):設置 -g 預設終端“screen-256color” 設置 -g 預設終端“xterm-256color” 設置 -g 預設終端“screen.xterm-256color” 設置 -g 預設終端“tmux-256color”
- 使用
tmux -2
.在所有情況下,Vim 繼續在 tmux 中顯示不同的顏色。
tmux
不支持 terminfo 功能**bce
**(背面顏色擦除),該功能vim
檢查以確定是否使用其“預設顏色”方案。的那個特性
tmux
已經提到過幾次了——
我以前也有類似的問題。Vim 中的藍色註釋很難閱讀。在
.tmux.conf
我設置這個:set -g default-terminal "screen-256color"
並在
.vimrc
:set background=dark