2013-05-22 29 views
1

我讀過這個SO question自動改變色彩方案基於文件類型

我也執行以下幫助主題:
:h BufEnter
:h BufNewFile
:h BufLeave

...但還是 - 我有以下是vimrc - 它是如何工作的?

colo pyte 
autocmd! BufEnter,BufNewFile *.sql colo Zenesque 
autocmd! BufLeave *.sql colo pyte 

如果我打開一個.sql文件,我認爲它的執行BufNewFile,因此適用的配色方案Zenesque?如果我然後離開該緩衝區並將光標置於vimrc的緩衝區中,那麼BufLeave行肯定會執行,但是它將應用哪個緩衝區以及爲什麼要在BufLeave旁邊指定.sql

+0

事件列表中不能有空格:BufEnter,BufNewFile應該讀取BufEnter,BufNewFile。 –

+0

@IngoKarkat - 不錯的地方;在實際文件中沒有空格....我輸入了上面的內容 - 現在編輯 – whytheq

回答

5

Colorschemes是全球性的;它們的顏色同時適用於所有窗口。因此,只能爲每個緩衝區/文件類型/窗口創建不同顏色格式的錯覺,如果您在同一時間顯示不同的文件時將會破碎。如果您不使用窗口拆分或者只使用相同顏色的拼圖同時顯示,那麼:autocmd的解決方案應該可以工作。

BufLeaveBufEnter的對應部分; BufNewFile只是新緩衝區的特例。全都具有相同的*.sql模式,以便它們相互撤消。例如,當您從.vimrc移動時,BufEnter將執行。當您移回去時,將執行BufLeave。對於你的.vimrc緩衝區,類似的事件會觸發,但是它們之後沒有任何動作,因爲你還沒有爲*.vim定義類似的autocmds。

注意:如果您想擴展切換到更多文件類型和色彩搭配,this answer可能會有所幫助。