在我的.vimrc我有一個兩個空格的通用標籤設置,我想覆蓋每個語言的基本(即,四個Python等,否則使用默認值),但我無法找到任何這方面的好例子。如何在Vim中爲不同語言設置不同的標籤設置?
回答
只需將設置到文件類型插件文件 〜/ 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」 (新的或者現有的)的每個文件。
通常情況下,您要爲特定語言設置一個特殊的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
很好,謝謝。我打算使用這個解決方案而不是基於ftplugin的解決方案,因爲在我使用相同語言的多個文件擴展名的情況下(比如你在Haskell示例中),這看起來更清晰。 – 2009-05-21 08:11:15
有一點小的代價。每次切換到這樣的緩衝區時,源命令(例如〜/ .vim/haskell.vim)都會被執行。 – 2009-05-21 08:55:29
這不是正確的解決方案。正確的解決方案包括使用ftplugins(不需要自己編寫和維護自動命令)和使用本地設置(非常重要)。 - > s#:set tabstop =#:setlocal tabstop =#。見fgm的答案。如果您的擴展程序未被識別爲haskell,則更新您的文件類型庫。你不想讓vim將正確的語法高亮應用到你的文件嗎? – 2009-05-21 10:43:26
我的回答基於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
這些其他的答案似乎太複雜。不要在〜/ .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
我使用editor config插件和.editorconfig文件添加到我的所有項目 - 它會讓你定義使用相同的編程語言不同的項目可以是經常不同的項目有用不同的縮進設置在同一種語言中有不同的編碼標準。
你可以看到的配置類型,你可以在這裏設置的例子: http://editorconfig.org/
- 1. 如何設置不同的語言
- 2. 如何設置matplotlib.dates.DateFormatter不同語言
- 3. 爲不同語言設置info.plist文件
- 4. 如何在同一個標籤中設置不同的顏色?
- 5. 如何在Android上爲不同分辨率的不同語言設置文本?
- 6. 如何爲不同的蜘蛛設置不同的scrapy設置?
- 7. iPhone:如何在應用程序設置中添加不同的語言設置?
- 8. 以不同語言設置日期
- 9. 如何爲asp.NET應用程序設置不同的語言?
- 10. 如何測試爲SKProductsRequest設置不同的語言環境
- 11. 如何爲不同的語言設置i18n?
- 12. 如何爲網站上的不同蜘蛛設置不同的語言?
- 13. 爲每種語言設置不同的Formatter配置
- 14. HighCharts設置不同的xAxis標籤
- 15. 如何在levelplot中設置不同的x&y標籤?
- 16. 如何在餅圖圖例中設置不同的標籤
- 17. 如何在不同的標籤中設置默認按鈕?
- 18. Rails:如何爲多個字段設置不同的標籤_
- 19. 如何將不同的forecolor設置爲單個標籤?
- 20. 如何在Facebook頻道中爲Bot框架設置不同的語言?
- 21. 如何在Drupal中爲每種語言設置不同的主頁?
- 22. 如何在magento中爲不同的主題設置不同的徽標2.1
- 23. 如何爲不同的用戶設置不同的系統區域設置
- 24. 設置不同的語言爲ASP.NET MVC錯誤
- 25. 爲所有編程語言文件類型設置vim設置
- 26. 如何在codeigniter中爲3種不同語言設置form_validation錯誤消息?
- 27. 如何爲rPlot中的不同點設置不同的顏色?
- 28. 如何將iOS模擬器永久設置爲與英語不同的語言
- 29. 測試在語言檢測從訓練完全不同的設置設置
- 30. Django populate()不可重入多語言設置與不同的域
很遺憾,我們仍然需要ftplugin來做到這一點。 – shabunc 2013-11-12 06:50:24