2012-09-16 27 views
3

我想每次我打開一個HTML文件時有命令基於文件類型執行vim命令?

let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' 

運行。我試着把這行

autocmd FileType html let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' 

在我的ftdetect和ftplugin文件夾中名爲html.vim的文件中,什麼也沒有發生。我如何在每次我在HTML文件中運行命令?

該命令用於更改matchit btw的匹配行爲。

+0

您可以發表評論[您的原始問題的答案](http://stackoverflow.com/a/11852359/546861)。 – romainl

回答

5

一般來說,你的autocmd是可以的;問題在於你試圖重新定義在$VIMRUNTIME/ftplugin/html.vim中完成的b:match_words定義,所以執行順序變得很重要。

這些定製的位置在目錄後的,即~/.vim/after/ftplugin/html.vim;只需創建一個新文件並將:let命令放在那裏。

您可以通過:scriptnames觀察源腳本的順序。在其他情況下,當您不覆蓋默認行爲時,:autocmd FileType是可以的,但我更願意將這些(例如自定義映射)放入~/.vim/ftplugin/html_mymappings.vim,因爲它提供了更好的分隔,並有助於保持簡短和易於理解。

ftdetect子目錄用於文件類型檢測,即檢查文件路徑/名稱/內容以確定正確的文件類型。它不適用於此,因爲文件類型是html