在OS X Terminal.app上,Vim Solarized的颜色不正确

11

设置 t_Co=256 没有改变任何东西 :( - marcaddeo
但是你也改变了$TERM环境吗?要查看其当前状态,请使用echo $TERM。如果不是像xterm-256color这样的东西,那么您将需要将其设置为这样。(在Terminal.app首选项中,我想) - Michael Berkowski
是的,我确保是xterm-256color(它本来就是),甚至尝试了TERM=xterm-256color vim。 - marcaddeo
这不是重复的。这是一个不同的问题。 - EhevuTov
显示剩余2条评论
1个回答

9
我曾经也遇到过这个问题。
然而,以下语句解决了所有问题,这是我如何在我的 .vimrc 文件中控制终端支持的方法:https://github.com/Greduan/dotfiles/blob/8b48b0d788c0fed6fc14720bbe3ae9def31af947/vim/vimrc.vim#L550-L556
if !has('gui_running')
    " Compatibility for Terminal
    let g:solarized_termtrans=1

    " Make Solarized use 16 colors for Terminal support
    let g:solarized_termcolors=16
endif

如果您正在使用终端,可以通过使用:let g:solarized_termcolors = 16来解决终端的问题。

伪代码:

  • 如果用户没有使用图形界面:
    • 那么将termtrans设置为1。
    • 并告诉Vim仅使用16种颜色,或者256种颜色(如果您的终端支持它)。
  • 结束

编辑1:

如果您确定正在使用256色终端,则可以直接忽略上述步骤。如下:https://github.com/Greduan/dotfiles/blob/6dac113d8281b0201399831bf62a2ea520d28154/vim/vimrc.vim#L551-L561

if !has('gui_running')
    " Compatibility for Terminal
    let g:solarized_termtrans=1

    if (&t_Co >= 256 || $TERM == 'xterm-256color')
        " Do nothing, it handles itself.
    else
        " Make Solarized use 16 colors for Terminal support
        let g:solarized_termcolors=16
    endif
endif

这个代码会检查你是否拥有终端。如果有,就设置termtrans,然后检查你的终端是否支持256种颜色,如果支持,就不做任何改变,否则将Solarized设置为使用16种颜色。这样效果更好。


我不太确定是怎么回事,但是这样修复了。我知道我试过16种颜色哈哈 - marcaddeo
原来,在将我的Terminal.app切换到自定义的solarized主题后,我没有尝试过16种颜色设置。现在可以工作了!如果有人遇到这个问题,请尝试使用此Terminal.app主题 - marcaddeo
很高兴为您解决了问题,jackyyll! :) - greduan
这种解决方案唯一的问题是,据我观察,会失去许多颜色,或者有较少的唯一颜色。我仍在努力找出它无法运作的原因和如何修复它。如果我找到了,稍后会再回报。 - greduan
好的,发现如果您的终端有256种颜色,则解决此问题的最佳方法是什么都不做,将其保持不变。 - greduan
1
let g:solarized_termcolors=256 对我很有帮助。 - mixel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接