为什么 Vim 仅在我手动获取 .vimrc 后才激活我的突出显示配置?

为什么 Vim 仅在我手动获取 .vimrc 后才激活我的突出显示配置?

我正在清理我的vimrc今天,将其拆分为单独的文件以使其更易于维护。完成这些更改后,除了突出显示尾随空白之外,我的所有配置、映射和插件似乎都在工作。

我在 .vim/rc/appearance.vim 中有以下几行:

highlight RedundantSpaces term=standout ctermbg=red guibg=red
match RedundantSpaces /\s\+$\| \+\ze\t/ "\ze sets end of match so only spaces highlighted

据我了解,第一行创建一个突出显示组“RedundantSpaces”,并指示 vim 在彩色终端上将与突出显示组匹配的任何文本的背景设为红色。第二行定义用于识别与突出显示组匹配的文本的模式。

当我在 vim 中打开文件并开始在空行上键入空格时,它们不会以红色突出显示。如果我运行:source ~/.vimrc,则会突出显示。

rc/*.vim如果我删除从中获取所有单个文件的行.vimrc并直接将上述两RedundantSpaces行放入.vimrc,vim 的行为将按预期进行,并且尾随空白会突出显示。

但是,如果我保留 source 行rc/*.vim,然后将这些RedundantSpaces行放在 my 的末尾.vimrc(即这些命令是调用 vim 时最后运行的命令),突出显示仍然不起作用,我需要这样做source ~/.vimrc

很明显,我的rc/*.vim文件中的某些内容与突出显示配置的交互效果很差,但是我无法解释那是什么。这些文件中的任何内容都不应该与突出显示配置交互。

谁能建议这里可能出了什么问题?

答案1

该问题是由明智的插件:第 93 行:help t_Co

" Allow color schemes to do bright colors without forcing bold.
if &t_Co == 8 && $TERM !~# '^linux'
  set t_Co=16  " << --- Causes hickup
endif

如果你以详细日志模式 ( vim -V15load_log.vim) 运行 vim – 并搜索t_Co=RedundantSpaces你会看到它sensible实际上已被解析你的appearance.vim文件。

快速解决方法是注释掉代码的该部分并将其添加到您的 中.vimrc,但是当您链接到 git 存储库时,这可能不是您想要的。

另一种方法是将其移出bundle目录并将其作为单独的source行添加到您的vimrc,你的全局循环。

IE:

  source ~/.vim/hacks/vim-sensible/plugin/sensible.vim

  for f in split(glob ...

另一种方法是在 BufLoad 上加载自定义突出显示。

ETC。 …

答案2

如果你使用 NeoBundle 然后使用NeoBundleLazy 'tpope/vim-sensible',那么NeoBundleSource在你的 vimrc 末尾就可以了。另请参阅https://github.com/tpope/vim-sensible/issues/74

相关内容