2010-05-22 34 views
44

我正在通過我的vim dotfiles來整理它們。我注意到,我一直以各種不一致的方式添加各種文件類型特定的設置。假設我正在爲Python定製:在.vim和.vimrc中組織文件類型設置的最佳方法是什麼?

  • au BufRead,BufNewFile *.py (do something)。我不喜歡這樣做,因爲一些Python文件可能沒有.py終結符。

  • au FileType python (do something)。這似乎是一個更好的選擇,因爲它不依賴於具有.py終止的文件。缺點是Vim不知道一些文件類型。我可以讓Vim識別附加的文件類型,但是我也有不同的方式來執行它:.vim/filetype.vim文件,.vim/after/filetype.vim中的另一個文件和.vimrc中的各種set filetype命令。

  • 添加一個文件類型特定設置的.vim/ftplugin/python.vim文件。我知道$VIMRUNTIME/ftplugin/python.vim可以覆蓋我在這裏設置的任何設置。一個問題是我不確定這是如何與.vim/filetype.vim.vim/after/filetype.vim相互作用的。

  • 添加一個.vim/after/ftplugin/python.vim。我知道這是在$VIMRUNTIME/ftplugin/python.vim之後加載的,因此它可以覆蓋那裏的設置。與前面的方法一樣,我不確定它如何與filetype.vim文件進行交互。

所以我必須這樣做,不說也罷語法文件和特定文件類型的插件至少在四個方面。在我看來,最好的辦法是將我的文件類型特定設置放在after/ftplugin中,以免它們被覆蓋,filetypes.vimafter中出於同樣的原因。

但是,在繼續之前,我想問問任何人是否有關於處理文件類型特定設置的最佳方法的建議。

回答

63

我存儲我的Python特定設置是在$HOME/.vim/ftplugin/python.vim,因爲我什麼都不做與$VIMRUNTIME/ftplugin/python.vim衝突。

ftplugin文件保持這些設置保存my .vimrc不錯,通用和易於維護(它仍然是十幾年的Vim的使用後相當大的)。

如果你想overrule什麼ftplugin s的你Vim的發佈設置,然後$HOME/.vim/after/ftplugin/python.vim是你想要的,因爲它是閱讀after這些。

類似地,$HOME/.vim/filetype.vim將在$VIMRUNTIME/filetype.vim之前獲得,並且在$HOME/.vim/after/filetype.vim之前將來源。

調用:scriptnames將按照它們第一次採購的順序列出所有的源腳本名稱。

:help filetype提供了關於所有這些的非常全面的信息。

+18

只是想在這裏添加一個註釋,並非所有的設置都必須位於一個文件類型的單個文件中,它們可以位於以filetype命名的目錄中。我在.vim/ftplugin/python/{pydoc.vim,python.vim等中有我的python設置(和特定於python的插件)。} – 2010-05-23 01:55:57

+2

+1:偉大的一點,如果你有一個給定的文件類型很多不同的設置這是一個非常乾淨的方式來組織它們。 – Johnsyweb 2010-05-23 02:11:32

+0

如果您將您的點文件保存在源代碼管理下,則可以更輕鬆地保持您的所有點文件始終處於最新狀態。 – Johnsyweb 2010-05-23 02:12:05

相關問題