我正在處理幾個項目,每個項目都使用不同的縮進樣式(用於各種文件類型)。例如每個縮進級別1個選項卡,2或4個空格等。如何自動切換這些不同樣式?我通常喜歡使用製表符縮進,但是我厭倦了輸入:在使用空格縮進代碼時一直設置expandtabs。可能的解決方案將包括根據文件路徑或項目根目錄中的某些配置加載一段vim配置。有沒有一個插件可以以優雅的方式爲我解決這個問題?如何在vim中實現項目特定的縮進?
回答
- 看那
cinoptions
選項和softtabstop
選項(和expandtab
,但你知道)。 在你「的〜/ .vimrc」,定義每個地方你把一些項目像源目錄緩存條目自動命令:
augroup ProjectSetup au BufRead,BufEnter /path/to/project1/* set et sts=2 cindent cinoptions=... au BufRead,BufEnter /path/to/project2/* set noet sts=4 cindent cinoptions=... augroup END
如果項目的語言混合,需要針對不同的設置那麼,你也可以添加 狀延伸:
au BufRead,BufEnter /path/to/project1/*.{c,h} set noet sts=0 cindent cinoptions=... au BufRead,BufEnter /path/to/project1/*.py set et sts=4
我使用該插件localvimrc,這不正是你所要求的:
有時,當您在不同的項目上工作時,您遇到了問題,他們使用不同的縮進,製表符擴展等。你需要的vimrc爲從覆蓋您的首選設置每個項目的〜/ .vimrc
是的,有:如果您使用的Project Plugin,您可以指定其內容正在評估每一次文件,你打開該項目的文件(該文件被稱爲in.vim
)。 in.vim
的反義詞是out.vim
:每次您離開項目時都會執行此項目。
其實我使用項目插件,但切換到自動命令(請參閱其他答案)設置項目特定的選項(我也設置像makeprg等東西)。項目插件的in / out.vim的問題是,如果你首先輸入的不是來自項目插件的緩衝區,而是例如來自quickfix列表(在':make'或':grep'後面)或顯式命令(' :e%:rh'通常在C/C++中非常有用)。 – 2011-05-30 12:38:44
什麼是EditorConfig?
EditorConfig幫助開發人員定義和維護不同編輯器和IDE之間的一致編碼風格 。 EditorConfig項目 包含用於定義編碼樣式的文件格式和文本編輯器插件的集合 ,它們使編輯人員能夠讀取文件格式並且遵循定義的樣式。 EditorConfig文件易於閱讀,並且可以與版本控制系統很好地協作。
在其他幾件事情中,它允許您設置縮進。這是非常簡單和最重要的標準化方式,由許多不同的編輯器和IDE-s支持,因此它不僅會爲您設置適當的縮進,而且可能會讓所有人在項目中工作。
您只需要在項目根目錄下創建一個.editorconfig
文件,並且Vim會自動找到它(假設您已經安裝了插件),並設置適當的值。示例配置文件:
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,html}]
indent_size = 2
[*.css]
indent_size = 4
- 1. 如何在VIM中啓用文件特定的選項卡縮進設置?
- 2. 如何以特定方式配置vim中的縮進?
- 3. vim如何讓vim用縮進來包裹帶有項目符號的文本?
- 4. 如何使用ListVIew在特定項目上實現監聽器?
- 5. 如何在vim/gvim中縮進多行?
- 6. 在Visual Studio 2005中禁用自動縮進特定項目?
- 7. 在VIM中從項目根縮進整個代碼庫
- 8. 如何在我的項目中實現進度條?
- 9. 如何修復vim中的JSON縮進?
- 10. Xcode4中的項目或工作區特定縮進
- 11. 如何在基於大括號的vim中定義縮進?
- 12. 我如何在vim中爲特定語法熒光筆分配縮進塊?
- 13. 始終在vim中縮進
- 14. 如何在ClassLibrary項目中實現System.Windows.Markup.MarkupExtension
- 15. 如何在項目中實現UIPageController
- 16. 如何在MVVM項目中實現notifyicon
- 17. 如何在ASP.NET項目中實現HTTPS?
- 18. 如何在Bootstrap上實現左右縮進的固定菜單?
- 19. 如何使Vim中的所有選項卡縮進對齊
- 20. 如何在vim中實現跨目錄的符號引用?
- 21. 在vim中自動縮進壓縮的縮進代碼
- 22. 如何實現在CruiseControl的Flex項目
- 23. 「Snappy」縮進Vim?
- 24. Vim啞縮進?
- 25. 在vim中的python文件中縮進的選項卡
- 26. 如何實現縮進邊境
- 27. 如何在yacc或bison中實現python風格的縮進?
- 28. 如何在vim中使用縮進進行Web開發?
- 29. 如何縮進兒童UL項目
- 30. 如何縮進項目符號ppt vba
你能否提出一種基於vim文件類型而不是文件擴展名區分語言的方法?我喜歡你的答案,但這部分看起來像是重複我的配置的一部分。謝謝! – VoY 2011-05-30 08:56:56
@VOY:自動命令也有'FileType'事件。但是它的模式與文件類型匹配,所以你必須自己檢查路徑。或者你可以把代碼放在'〜/ .vim/after/ftplugin/.vim'中,但是你必須再次檢查你自己的路徑。 –
2014-01-09 07:53:36