如何在 Vim 中启用全彩支持?

Dav*_*gel 100 vim colors command-line

我有一个可爱的 Vim颜色方案 ( xoria256 ),它在 GVim 中看起来很棒,但是当我vim在终端中使用 normal时,仅部分支持颜色方案——例如,使用默认的半透明茄子背景色。如何让终端忠实地呈现我的 Vim 配色方案?

Mar*_*nas 80

GNOME 终端支持 256 色,但没有宣传其支持。您可以通过放置以下内容来覆盖 vim 的自动检测:

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif
Run Code Online (Sandbox Code Playgroud)

在你的 ~/.vimrc 中。

注意:如果您使用 GNU screen,它会很乐意吃掉那些 256 色代码并将它们转换为基本的 16 色。更好的解决方法是在启动 screen/vim 之前将 TERM 更改为 xterm-256color。

2017 年更新:如果您有足够新的 Vim(7.4.1799 或更新版本)和足够先进的终端模拟器(xterm,或基于足够新的 VTE 版本的 gnome-terminal),您可以:set termguicolors并且终端 vim 将使用完整的使用 .vim 主题定义的 24 位颜色highlight guifg=#rrggbb guibg=#rrggbb

  • 最好将 gnome-256color 用于 gnome-terminal 和 screen-256color 用于屏幕。 (3认同)
  • @trusktr google up CSApprox 和 CSExact vim 扩展。 (3认同)

Dav*_*ngs 45

更通用的解决方案是安装术语类型“xterm-256color”。在 10.04 我认为它是默认安装的。以前您需要安装“ncurses-term”才能获得它。

然后在 .bashrc 中设置术语类型,如下所示:

if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then
    export TERM=xterm-256color
fi
Run Code Online (Sandbox Code Playgroud)

如果您希望某些程序仅具有 256 色功能(可能会混淆其他程序),请改用:

TERM=xterm-256color myprogram
Run Code Online (Sandbox Code Playgroud)

并可能将其设置为程序的别名。

然后使用以下命令检查您的终端颜色功能:

$ tput colors
256
Run Code Online (Sandbox Code Playgroud)

您可能仍然需要上面的 vim 设置才能让 vim 识别它。大多数应用程序会自动识别 256 种颜色(如果它们可以使用的话)。

Emacs 也有颜色主题,256 色更好。要检查它是否支持 256 色,请运行:

M-x list-colors-display
Run Code Online (Sandbox Code Playgroud)

256colors.pl是 Perl 脚本,它将在您的终端中显示所有颜色。

  • 戴夫,我不是 100% 确定它是否正确,但这是您命令的 **oneliner 版本**:`[[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM= xterm-256color`。请验证并随时将其添加到帖子中。 (2认同)

crn*_*sta 36

只需$HOME/.bashrc将以下行包含在您的(最好在文件的最后一行)中:

export TERM="xterm-256color"
Run Code Online (Sandbox Code Playgroud)

并保存它。之后,重新启动您的 gnome 终端。此更改不仅适用于 vim,还适用于您的所有终端应用程序。

要检查它是否有效,请运行这个小脚本

export TERM="xterm-256color"
Run Code Online (Sandbox Code Playgroud)

此后,您将看到类似以下内容(取决于您的 gnome-terminal 主题):

终端

  • 我想知道为什么在 Python 中制作脚本,如果它只包含 shell 命令。Bash 中有循环、while、if 和函数,你知道的;) (2认同)