浏览tmux、Vim和Solarized我可以发现很多关于 256 色和“用户体验”的抱怨。好吧,我遇到了相反的“问题”,即Vim只能在tmux 中与完整的Solarized主题配合使用。
我一直在调整和调整我的Ubuntu终端和Guake的配色方案,我几乎达到了使用tmux时达到的完美,这反过来意味着总是。我现在试图理解为什么会发生这种情况。
下面有两个终端,左边的一个只运行Vim(显示当前.vimrc
),而另一个在tmux会话中运行Vim。正如您可以清楚地看到的,只有在tmux会话中,字体才为粗体,我认为这是正确的(或不正确?)。
为什么tmux允许使用粗体,而运行tmux的终端则不允许?这是一个错误还是一个功能?
Atc*_*old 24
这是一个错误。
它看起来像“正确的”可视化是在左边,其中一个加粗字体都没有渲染。据我所知(这是参考),最初使用粗体属性来设置8 种基色的突出显示版本。
从历史上看,8 种默认 ANSI 颜色的粗体版本与 8 种默认颜色的亮色版本之间存在一一对应的关系。过去,当彩色程序要求显示粗体文本时,终端仿真器可能更容易显示任何文本颜色的更亮版本(并期望用户将其解释为粗体),而不是显示一个粗体字的字体。
基本上,这里发生的一切是为了使用完整的Solarized调色板,用橙色,紫色和所有级别的灰色,颜色被称为与大胆的属性,而这又是指替代8种颜色的ANSI 调色板。
终端正确理解这一点,并在正常排版中显示橙色和灰色注释,而tmux为它们添加了不必要的粗体字体。总之,左侧是正确的,而右侧则不是。
有没有办法禁用tmux的粗体渲染?
我仍然需要对此进行一些研究,一旦发现我会更新此答案。
在这里,我们有解决方案!:)
为了让tmux正确运行,我们必须调用它告诉他我们处于启用 256 色的环境中。
TERM=xterm-256color /usr/bin/tmux
Run Code Online (Sandbox Code Playgroud)
为方便起见,我们可以alias
这样做(即您添加alias tmux="<the line above>"
到您的~/.bashrc
)。
调用tmux
as tmux -2
,强制tmux以 256 色支持运行(而不是重新定义TERM
环境变量)将不允许正确解释“粗体替代”8 种颜色(即更亮的变体也将导致具有粗体排版)。因此,我强烈建议使用该解决方案在这里上面有两个正确的256个色的解释和非粗体“粗体另类”的色彩。