11

可能重复:
为什么大多数 vim 配色方案在我使用它们时看起来不像屏幕截图那样漂亮?

我正在尝试将我的 vim 配置转移到仅从终端使用它。目前我正在使用 gVim,一切正常。

但是在 terminal.app 中,配色方案关闭了。我在终端.app 中使用 Solarized 256 主题,在 vim 中使用 Solarized 主题。

这就是他们的样子:

gVim 左,Terminal.app 右

我必须设置 g:solarized_termtrans = 1 才能让 ti 背景甚至显示正确的颜色。

4

1 回答 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.

伪代码:

  • 如果用户不使用 GUI:
    • 然后设置termtrans等于一。
    • 并告诉 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 种颜色。这效果要好得多。

于 2012-12-30T20:45:43.983 回答