Vim

tmux、Vim 和 Solarized

  • June 25, 2017

前提

瀏覽tmuxVimSolarized我可以發現很多關於 256 色和“使用者體驗”的抱怨。好吧,我遇到了相反的“問題”,即Vim只能tmux中與完整的Solarized主題配合使用。

背景

我已經用我的Ubuntu終端和Guake的配色方案進行了一些調整和調整,我幾乎達到了使用tmux時所達到的完美狀態,這反過來意味著永遠。我現在正試圖理解為什麼會發生這種情況。

下面有兩個終端,左邊的一個只執行Vim(顯示目前.vimrc),而另一個在tmux會話中執行Vim 。正如你可以清楚地看到的,只有在tmux會話中字型是粗體的,我猜這是正確的(或者不是?)。

在此處輸入圖像描述

問題

為什麼tmux允許使用粗體字型,而執行tmux的終端卻不允許?它是錯誤還是功能?

簡短的回答

這是一個錯誤。

完整答案

看起來“正確”的視覺化是左側的視覺化,其中未呈現粗體**字型。**據我所知(這裡是參考),最初使用粗體屬性來設置8 種基色的突出顯示版本。

從歷史上看,8 種預設 ANSI 顏色的粗體版本和 8 種預設顏色的明亮版本之間存在一一對應的關係。過去,當一個顏色程序要求顯示粗體文本時,終端仿真器可能更容易顯示文本顏色的更亮版本(並希望使用者將其解釋為粗體)而不是顯示粗體字。

基本上,這裡發生的事情是,為了使用完整的Solarized調色板,橙色紫色和所有級別的灰色,使用**粗體屬性呼叫顏色,這反過來又指的是替代的8 種顏色ANSI 調色板。

終端正確理解這一點,並在正常排版中顯示**橙色灰色註釋,而tmux為它們添加了不必要的粗體字型。總而言之,左邊是正確的,而右邊是錯誤的。

問題2

有沒有辦法禁用**tmux的粗體渲染?

我仍然需要對此進行一些研究,我會在發現某些內容後立即更新此答案。

答案 2

在這裡,我們有解決方案!:)

為了讓tmux正常執行,我們必須呼叫它,告訴他我們處於啟用 256 色的環境中。

TERM=xterm-256color /usr/bin/tmux

為方便起見,我們可以alias這樣做(即您添加alias tmux="<the line above>"到您的~/.bashrc)。

tmux 正確解釋非粗體“粗體替代”顏色

呼叫tmuxastmux -2來強制tmux以 256 色支持執行(而不是重新定義TERM環境變數)將不允許正確解釋“粗體替代”8 種顏色(即更亮的變體也會導致粗體排版)。因此,我強烈建議使用上面的解決方案來獲得正確的256 色解釋非粗體“粗體替代”顏色。

引用自:https://unix.stackexchange.com/questions/118892