2009-05-21 105 views

回答

47

只需將設置到文件類型插件文件 〜/ vim的/文件類型插件/ LANGUAGE.vim。 我〜/的.vim /文件類型插件/ perl.vim包含行:

" 
" ---------- tabulator/shiftwidth -------------------- 
" Set tabulator and shift width to 4 (Perl Style Guide) 
" 
setlocal tabstop=4 
setlocal shiftwidth=4 
" 

這些設置將自動生效用於與文件類型「的perl」 (新的或者現有的)的每個文件。

+0

很遺憾,我們仍然需要ftplugin來做到這一點。 – shabunc 2013-11-12 06:50:24

9

通常情況下,您要爲特定語言設置一個特殊的vimrc類型的文件,然後在您的主.vimrc中使用自動命令來在必要時執行特殊的vimrc。這是我的哈斯克爾(.hs等)配置文件:

autocmd! BufNewFile,BufReadPre,FileReadPre *.hs so ~/.vim/haskell.vim 
autocmd! BufNewFile,BufReadPre,FileReadPre *.hsc so ~/.vim/haskell.vim 
autocmd! BufNewFile,BufReadPre,FileReadPre *.lhs so ~/.vim/haskell.vim 
autocmd! BufNewFile,BufReadPre,FileReadPre *.cabal so ~/.vim/haskell.vim 

~/.vim/haskell.vim做的東西,如「設置expandtab」使用空格代替製表符,以及其他各種魔法格式化和這樣的事情。您可以經常從http://vim.org和其他網站下載各種語言的良好版本。

請注意,您可以做的不僅僅是更改vim設置。例如,你可以在編輯之前和之後運行經過過濾器的文件:

" Edit gpg-encrypted ascii-armoured files 
autocmd! BufReadPre,FileReadPre  *.asc set bin 
autocmd BufReadPost,FileReadPost *.asc '[,']!gpg -q -d 
autocmd BufReadPost,FileReadPost *.asc set nobin 
autocmd! BufWritePre,FileWritePre *.asc set bin 
autocmd BufWritePre,FileWritePre *.asc '[,']!gpg -e 
autocmd BufWritePost,FileWritePost *.asc undo 
autocmd BufWritePost,FileWritePost *.asc set nobin 
+0

很好,謝謝。我打算使用這個解決方案而不是基於ftplugin的解決方案,因爲在我使用相同語言的多個文件擴展名的情況下(比如你在Haskell示例中),這看起來更清晰。 – 2009-05-21 08:11:15

+1

有一點小的代價。每次切換到這樣的緩衝區時,源命令(例如〜/ .vim/haskell.vim)都會被執行。 – 2009-05-21 08:55:29

+4

這不是正確的解決方案。正確的解決方案包括使用ftplugins(不需要自己編寫和維護自動命令)和使用本地設置(非常重要)。 - > s#:set tabstop =#:setlocal tabstop =#。見fgm的答案。如果您的擴展程序未被識別爲haskell,則更新您的文件類型庫。你不想讓vim將正確的語法高亮應用到你的文件嗎? – 2009-05-21 10:43:26

20

我的回答基於VIM Wiki上的this tip。這個答案使用「後」目錄,所以你不必爲提供不同的文件類型提供的插件文件。

例如,指定Python文件自定義設置,創建一個名爲python.vim握住你的Python設置文件:

setlocal expandtab 
setlocal shiftwidth=4 
setlocal softtabstop=4 

將該文件放在任何

  • ~/.vim/after/ftplugin(Linux的)
  • $HOME/vimfiles/after/ftplugin(Windows)

最後,你必須在你的.vimrc(Linux)或_vimrc(Windows)中有這樣的:

filetype plugin indent on 
60

這些其他的答案似乎太複雜。不要在〜/ .vim樹中混淆更多目錄和文件,只需將以下內容添加到〜/ .vimrc中即可。

autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 

(您可以是l33t並將參數縮寫爲et ts=4 sw=4 sts=4)。我發現這個在 Setting Vim whitespace preferences by filetype

2

我使用editor config插件和.editorconfig文件添加到我的所有項目 - 它會讓你定義使用相同的編程語言不同的項目可以是經常不同的項目有用不同的縮進設置在同一種語言中有不同的編碼標準。

你可以看到的配置類型,你可以在這裏設置的例子: http://editorconfig.org/

相關問題