tmux,Vim和Solarized


19

处所

浏览tmuxVimSolarized,我发现很多关于256色和“用户体验”的抱怨。好吧,我遇到了相反的“问题”,即Vim tmux中可以与完整的Solarized主题一起很好地工作。

背景

现在,我一直在使用Ubuntu终端和Guake的配色方案进行调整和调优,并且我几乎达到了使用tmux时达到的完美效果,这反过来又意味着总是如此。我现在正试图了解为什么会这样。

在下面有两个终端,左边的一个仅在运行Vim(显示当前.vimrc),而另一个在tmux会话中运行Vim。您可以清楚地看到,只有在tmux会话中,字体才为粗体,我猜这是正确的(还是不正确?)。

在此处输入图片说明

为什么tmux允许使用粗体字体,而运行tmux的终端却不允许呢?它是错误还是功能?


echo $TERMin和out 的输出是什么tmux
jasonwryan 2014年

tmux说,screen终端xterm:)
Atcold 2014年

@jasonwryan阅读OP的另一个问题在这里和吉尔的回答类似的一个在这里。显然$TERM没有什么关系。
terdon

@terdon在这种情况下很重要:tmux要求将术语设置为screen(或变体),而xterm默认为8色术语。这就是OP看到差异的原因。
jasonwryan 2014年

xterm*termName: xterm-256color你的~/.Xresources,看看是否有差别?
jasonwryan

Answers:


22

简短答案

这是一个错误。

完整答案

它看起来像“正确的”可视化是在左边,其中一个加粗字体没有渲染。据我所知(这里是参考),最初使用了bold属性来设置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正确解释非粗体“粗体替代”颜色

调用tmuxas tmux -2,以强制tmux在256色支持下运行(而不是重新定义TERM环境变量)将无法正确解释“粗体替代”的8种颜色(即,较亮的变体也将导致具有粗体排版)。因此,我强烈建议您使用上面的解决方案来同时具有256种正确的颜色解释非粗体的“粗体替代”颜色。


多爱的人!
shxfee 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.