如何在Vim中更改注释的字体颜色

107

我想要更改注释的默认字体颜色,由暗蓝色变成浅黄色。在黑色背景下很难阅读。我正在使用xfce4-terminal而不是带有GUI的gvim。

如何只更改这一个颜色?

到目前为止,我已经按照“Vim中的256种颜色”在我的~/.profile文件中更改了设置,使用了:

if [ -e /usr/share/terminfo/x/xterm-256color ]; then
        export TERM='xterm-256color'
else
        export TERM='xterm-color'
fi

set t_Co=256

~/.vimrc文件中。


9
只是一个愚蠢的问题,你尝试使用不同的内置配色方案了吗?例如,尝试使用:colorscheme desert命令。通常情况下,制表符补全功能应该能够正常工作。 - Benoit
我尝试过了。但我想要更多的自定义。如果没有人知道这个答案,我会接受你的作为最佳解决方案,因为你在我根据我想要实现的目标更具体地提出问题之前就回答了。 - xralf
你不能重新分配终端的颜色调色板吗?终端没有任何设置吗? - Benoit
@Benoit 请查看问题的下一个版本。 - xralf
9个回答

152

大多数规范的颜色方案都会遵循background设置。

set background=dark

当使用默认颜色方案时,将把注释的颜色从深蓝色更改为浅蓝色。


7
这是一个很棒的解决方案。也许不是针对上述问题的最佳答案,但完美地解决了“很难阅读”的问题。 - GabrieleV
6
在Ubuntu上,这应该是默认设置。当深蓝色文字出现在紫色背景上时,注释几乎无法阅读。谢谢。我已将此添加到我的~/.vimrc文件中。如果有人想要测试一下不进行任何更改的情况下此设置的外观,请在按下“:”键后在vim中输入以上命令即可。 - Drew Noakes
1
那是谷歌搜索的第一件事。然而,我喜欢默认颜色(除了注释),这些颜色在黑暗的终端窗口中和粘贴到白色背景的电子邮件/文档中都能很好地工作。我喜欢黑暗的终端,怎么说呢?(怀旧/自定义) - Roboprog
2
将“set background=dark”这一行添加到~/.vimrc文件中即可解决问题。之前我已经习惯了其他的配色方案,所以现在我的大脑认为这看起来很丑...但至少我现在能够看到我的注释了。感谢! - sonjz
5
你可以直接将这段代码添加到你的 ~/.vimrc 文件中,无需做任何修改。如果只想在当前会话中预览代码效果,可以在命令模式下输入该代码( normal 模式下,按 : 进入命令模式)。 - mike3996

70
:hi Comment guifg=#ABCDEF

选择你的颜色!如果使用彩色终端,请用数字 N 替换 guifg=#ABCDEFctermfg=N

同时输入:help :hi获取更多信息。


2
谢谢。ctermfg可以使用像绿色或黄色这样的颜色。但是,如果我给它#ABCDEF或ABCDEF,它会写出错误“E421:未识别的颜色名称或编号”。它不识别十六进制代码中的字母,只识别数字。 - xralf
是的,guifg 参数是用于在使用 Vim GUI(GVim)时的。 - Benoit
2
这意味着我只能使用16种颜色吗?我已经在.vimrc中添加了设置,但是它没有生效:set highlight Comment ctermfg=yellow - xralf
1
有超过16种颜色。请参见这里。我想让我的注释变成黄色,但只是稍微的黄色,并且永久保持这个颜色。在.vimrc中设置这个是否可能? - xralf
3
这已经晚了两年,但如果有其他人想知道@Roboprog的问题的解决方法。我的问题是当我在.vimrc文件中加入hi comment ctermfg=<colour>这一行时,它没有起作用,但后来我发现是因为这一行在syntax on之前,一旦我交换了它们的顺序,它就正常工作了。 - guskenny83
显示剩余3条评论

60
hi Comment ctermfg=LightBlue
将以下内容添加到你的 .vimrc 文件中,该文件位于你的 ~/etc/vim 目录下,这样设置会永久生效。我没有在 gvim 上测试过。
我在设置注释颜色之前还设置了set background=light。我喜欢它创建的所有颜色,除了注释的颜色。

2
LightBlue 是从哪里来的? - nn0p
只有当我把它放在 .vimrc 的 末尾 时,它才对我起作用。 - user3342981
@user3342981 位置不应该是问题。你的配置文件中一定有其他改变这个变量的设置。所以将其放在最后确保你的设置是最终被解释的。 - sherrellbc
1
我觉得我需要把它放在syntax on之后才能起作用。我不确定为什么。 - user3342981
1
我不得不添加 syntax on 并修改 set background=darkhi Comment ctermfg=119 以便以水绿色看到注释... - Cloud Cho
我发现黑底上的浅蓝色仍然几乎无法阅读。“119”结果更好。你的情况可能有所不同。 - mmo

9
在这个问题上,您可以通过搜索找到一份关于Vim的不错参考资料,尤其是在“256 colors in vim”(链接:http://vim.wikia.com/wiki/256_colors_in_vim)方面。
开始:
:verbose hi

当您实际在Vim中编辑文件时,请注意所有变量都与元数据相关联。

然后查看所有变量的元数据。从那里返回的数据使将所需的修改器类型添加到 .vimrc 中变得非常容易。例如,这些是我最近添加的更新,以便消除深蓝色,并且不必被浅蓝色所困扰:

set number background=dark
syntax on
highlight Comment    ctermfg=119
highlight Identifier ctermfg=99AA00

7
如果目标是使其在文本控制台的暗色背景下更易读,下面的命令是一个很好的选择并且易于记忆:
:colorscheme evening

但请注意,它会改变其他元素的颜色。


5

请查看 "Vim中的语法高亮"


set background=dark

或者

set bg=dark

是VIM用户的最佳解决方案!


1
有许多不同的颜色方案可用于Vim。"默认"颜色方案将注释显示为蓝色,这使得在黑色终端背景下阅读变得困难。我更喜欢使用"沙漠"颜色方案,它可以显示易读的颜色。
要在Vim中启用"沙漠"颜色方案,请使用命令:color desert。如果要返回默认设置,请使用:color default
您甚至可以使用以下命令更新您的~/.vimrc文件以使用您喜欢的颜色方案:
echo 'color desert' >> ~/.vimrc

0

我有同样的问题,想要将我的评论颜色从LightBlue更改为更柔和的颜色。根据@Benoit的回答,以下方法对我有效:

hi Comment ctermbg=0 ctermfg=DarkGrey
                 

我把它保存在我的~/.vimrc文件中。

0 = 黑色背景,即彩色终端背景:ctermbg=0,前景文本为DarkGrey,即彩色终端前景:ctermfg=DarkGrey


1
欢迎来到Stackoverflow。虽然您的回答可能有帮助,但格式很差(尝试使用代码格式化工具),并且缺乏来源参考(任何人怎么知道谁是Benoit)。 - Jakob Stark
欢迎来到SO!请参观[tour],阅读"[answer]"及其链接页面,以及"How do I format my posts..."和"How do I format my code blocks?"。 - the Tin Man

0

您可以先使用以下命令检查您的颜色方案:

:!ls $VIMRUNTIME/colors

然后尝试哪个最适合您。


如果它说明如何尝试该方案,那么这可能很有用。我可以查找它,但信息应该是自包含的。 - Adrian

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