為什麼 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

相關內容