tmux、Vim 和 Solarized
前提
瀏覽tmux、Vim和Solarized我可以發現很多關於 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
astmux -2
來強制tmux以 256 色支持執行(而不是重新定義TERM
環境變數)將不允許正確解釋“粗體替代”8 種顏色(即更亮的變體也會導致粗體排版)。因此,我強烈建議使用上面的解決方案來獲得正確的256 色解釋和非粗體“粗體替代”顏色。