我已經在互聯網上看到了部分解決方案,但沒有一個真的讓我滿意:我必須將什麼放入我的.vimrc中(理想情況下,我不希望碰巧語法/ *。vim文件),這樣在我打開的所有.c/cpp/h文件中,我會自動摺疊#ifdef ... #endif
部分?Autofold #ifdef ..#endif in vim via .vimrc
6
A
回答
6
如果你想摺疊的唯一類型是#ifdef
部分,最簡單的方法是創建一個文件~/.vim/after/ftplugin/c.vim
(您可能還需要爲此在cpp.vim
,我不知道),內容如下:
set foldmarker=#ifdef,#endif
set foldmethod=marker
如果你真想把它.vimrc
,而不是使用~/.vim/after/
結構,你可以做這樣的事情:
autocmd FileType *.[ch]{,pp} call FoldPreprocessor()
function! FoldPreprocessor()
set foldmarker=#ifdef,#endif
set foldmethod=marker
endfunction
您可能還需要考慮ü唱:
set foldmarker=#if,#endif
因爲這將趕上#if defined(...)
,#ifdef
,#ifndef
,#if 0
等以及#ifdef
。
這樣做與語法摺疊更具挑戰性,因爲你不得不改變語法規範,因爲它不支持這個標準。
6
您知道,您可以使用%鍵導航預處理器條件塊嗎?
另外,[#和]#向上/向下導航。
所以,你可以去一個條件塊的開始(也許/^#
輸入),然後
zf% -- fold to next conditional directive
v2]#zf -- fold to second next directive (e.g. #else... #endif)
zd
砸折。
也許你可以圍繞這個概念設計一個小腳本。我不太確定是否會出現(不利的)與常規語法摺疊的交互,因爲我不習慣使用它。我通常使用這種手動摺疊操作縮進摺疊。
相關問題
- 1. #ifdef/#ifndef和#endif
- 2. 的#define,#ifdef來和#undef #ENDIF
- 3. #ifdef #else #endif宏問題
- 4. Vim Only Highlighting〜/ .vimrc
- 5. Vim vundle colorschemes - vimrc
- 6. 的Vim在vimrc裏
- 7. position fixed in IE9 content in div loaded via ajax
- 8. Bayesian ANCOVA in R via jags
- 9. VIM:匹配投放的.vimrc
- 10. VIM:覆蓋系統vimrc
- 11. Vim的定製 - .vimrc裏 - 鍵
- 12. VIM在.vimrc中設置ctags
- 13. vim文件特定.vimrc
- 14. Vim處理vimrc如果文件夾
- 15. .vimrc
- 16. 從perl文件中刪除#ifdef/#endif的出現
- 17. #ifdef #else #endif選擇iOS sdk版本和功能?
- 18. C++類,在reguards混亂支持#ifdef,#定義和#endif
- 19. 如何編寫擴展爲`#ifdef ...#endif`宏塊的C宏?
- 20. JSP中C++的「#ifdef #endif」宏的等價物是什麼?
- 21. 使用另一個宏生成#ifdef,#endif子句
- 22. 爲什麼我們必須輸入vim〜/ .vimrc,爲什麼不只是vim〜.vimrc?
- 23. 自動保存緩衝區:make in vim?
- 24. DropDownListFor via via ViewBag
- 25. Math.pi vs double and rounding via printf in java
- 26. 啓動沒有vimrc的vim /用打開文件更改vimrc
- 27. Remaping [to {in vim
- 28. .vimrc動作關閉
- 29. 的.vimrc
- 30. vim windows版本默認vimrc文件說明
您使用的是什麼foldmethod?語法摺疊? –
是的,語法摺疊(但我想我可以這樣做,如果這減輕了自動摺疊) – dcn