在加载缓冲区后,Vim自动命令“:highlight”的正确方法是什么?

时间:2017-04-23 23:49:24

标签: vim autocmd autocommand

由于种种原因,我用16种颜色运行Vim,与我的终端颜色同步。在最近的Vim更新中,我不得不完全重写我的“〜/ .vimrc”以使其恢复到Linux上的运行顺序。

最初,我很惊讶地发现这条简单的行不起作用(甚至在其前面加上“语法”):

:highlight Comment ctermfg=White

我也在使用“LineNr”ctermfg。无论我在哪里放置/堆叠“评论”ctermfg,它都无法正常工作,或干扰其他一切正确的采购(即,与“LineNr”放在同一行)。但是,我发现在缓冲区加载后调用“Comment”会使注释按预期显示。

我是Vim中autocmd的新手(无论如何都想知道它是如何工作的)。在我的“〜/ .vimrc”中是否有一个“autocmd”调用,它将在加载缓冲区后立即运行上述代码行?

我已经尝试了几次迭代(BufWritePre,BufWritePost等)并且没有成功。这是我之前的尝试:

autocmd BufWinPost * :highlight Comment ctermfg=white

2 个答案:

答案 0 :(得分:0)

如果我快速:h autocmd-events,我发现事件BufWinPost不存在。我想,你想要BufWinEnter。您编写的autocmd应该有效,但:除外。 HTH

答案 1 :(得分:0)

不要无理由地诉诸:autocmd;更加努力地寻找根本原因!

您的描述缺乏细节;我猜您选择的colorscheme(或插件,但没有理智的插件应该会干扰默认突出显示)会覆盖Comment的自定义颜色。您可以通过

查看是谁定义的
:verbose highlight Comment

如果这指向您的colorscheme,您只需在之后执行:highlight命令。为此,您需要了解:help initialization,并检查:scriptnames的输出。如果:colorscheme foo中有~/.vimrc命令,那么 就像将:highlight命令放在其后一样简单。

如果您动态切换颜色方案,则需要:autocmd,因为大多数colorschemes都会覆盖基本的Comment定义。正确的事件和模式是ColorScheme *