![為什麼 Vim 僅在我手動獲取 .vimrc 後才啟動我的突出顯示配置?](https://rvso.com/image/31675/%E7%82%BA%E4%BB%80%E9%BA%BC%20Vim%20%E5%83%85%E5%9C%A8%E6%88%91%E6%89%8B%E5%8B%95%E7%8D%B2%E5%8F%96%20.vimrc%20%E5%BE%8C%E6%89%8D%E5%95%9F%E5%8B%95%E6%88%91%E7%9A%84%E7%AA%81%E5%87%BA%E9%A1%AF%E7%A4%BA%E9%85%8D%E7%BD%AE%EF%BC%9F.png)
我正在清理我的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。