2014-12-06 33 views
3

的解釋:如何在vimrc中將autocmd設置爲僅與特定文件類型一起運行?

最近,我收購了一個Git倉庫.vimrc文件,並發現它非常有用至今。隨附的其中一個有用的工具是它會在您編寫文件時自動刪除尾隨的空白區域。

但是,我剛開始使用markdown,它給出瞭如何編寫文本文件的清晰格式,可以輕鬆地將這些文件轉換爲不同的類型,如html。

問題是降價使用兩個尾隨空格來表示換行符。我的.vimrc自動刪除這些。我發現autocmd這樣做。它是:

autocmd BufWrite * :call DeleteTrailingWS() 

DeleteTrailingWS是實際刪除空白的函數。

我的問題:

如何修改這一點,以便它將只運行/設置此自動命令,如果文件的類型不降價? (.md) 請以這種方式解釋,以便我可以調用泛型函數,而不僅僅是上面的函數。另外,你如何做到這一點與多種文件類型。例如,僅當文件不是.md,.abcd或.efgh類型時才運行/設置此命令?

謝謝大家。

回答

4

在自動命令簡單地檢查文件類型:

autocmd BufWrite * if &ft!~?'markdown'|:call DeleteTrailingWS()|endif 
0

在自動命令指定類型的文件上運行的*,所以你只需要*.md來取代它。

autocmd BufWrite *.md :call DeleteTrailingWS() 
+0

這是有效的,但它具有從文件類型檢測複製文件模式的缺點。對於某些文件類型,沒有簡單的模式。 – 2014-12-06 20:03:42

1

克里斯蒂安的答案效果很好,當你想除了一些文件類型。對於其他情況下,限定了用於只是一些文件類型自動命令時,通常的做法是通過

:autocmd BufWrite <buffer> call ... 

定義緩衝器本地自動命令這可以通過其他添附:autocmd Filetype ... autocmd ...進行,或者在~/.vim/ftplugin/...

2

文件類型插件用於一個強大的解決方案,看看我的DeleteTrailingWhitespace plugin。與ShowTrailingWhitespace plugin一起,它已經檢測到諸如Markdown之類的文件類型(以可定製的方式),然後添加一個異常(比單純關閉它更細化;即允許兩個或更多空格,但仍然突出顯示Markdown中的尾隨標籤)。

相關問題