2009-11-16 53 views
9

我是vim的新手用戶,我一直無法在互聯網上找到如何摺疊功能,我已經想出瞭如何摺疊C中的參數列表與zfa}和zfa)。但我不知道如何摺疊評論部分。我怎麼做?崩潰的評論和vim/gvim中的所有功能

第二個問題但相關,有沒有辦法同時摺疊文件中的所有函數/參數列表/註釋?

回答

21

您所指的功能稱爲「摺疊」(請參閱​​:help usr_28)。 zf命令用於手動創建摺疊,僅在foldmethod選項設置爲「標記」或「手動」時才使用。在您給出的示例中,您正在創建由a}a)文本對象指定的區域的摺疊(請參閱:help usr_4.8)。

對於C,您可以setlocal foldmethod=syntax,摺疊區域將由語法規則自動確定。這隻能通過將設置置於~/.vim/ftplugin/c.vim或將以下autocmd放置在~/.vimrc中來完成。

autocmd FileType c setlocal foldmethod=syntax 

N.B.這兩者都要求啓用文件類型檢測(filetype on),並且ftplugin解決方案要求啓用文件類型插件(filetype plugin on)。後者是前者的超集,因此您不需要~/.vimrc中的兩個命令。

作爲用於打開/關閉所有的摺疊在當前的緩衝區,這些都是Ž- [R分別中號命令和ž。

+0

需要一件事。語法工作很好,但不讓我定義zfa),以便我可以摺疊參數列表。我有一些非常長的列表,我不需要看看它們是什麼,它會自動崩潰,但它不會讓我在語法模式下做到這一點,並且我有太多的函數可以使定義模式可用。 – 2009-11-16 20:17:48

+0

不幸的是,您不能同時使用多個foldmethods,手動摺疊創建僅適用於標記/手動方法。您可以將syntax/c.vim從系統範圍的目錄複製到〜/ .vim/syntax/c.vim,並將「fold」關鍵字添加到cParen語法定義的末尾。不利的一面是,無論何時創建新的主要Vim發行版,您都需要這樣做,這樣您就不會丟失任何上游進行的更改。它還要求您將開頭「{」放在單獨的行中,否則其摺疊將覆蓋參數列表摺疊。 – jamessan 2009-11-16 20:28:56

0

假設您已經設置了摺疊區域的方式,請將foldlevel設置爲所需的級別。

5

添加以下設置到〜/ .gvimrc裏:

"folding settings 
set foldmethod=indent "fold based on indent 
set foldnestmax=10  "deepest fold is 10 levels 
set nofoldenable  "dont fold by default 
set foldlevel=1   "this is just what i use 

然後您可以切換與ZA摺疊。您可以用zM摺疊所有內容,並用zR展開所有內容。 zm和zr可以用來使這些摺疊恰到好處。如果您遇到困難,請務必記住「help:folding」中的全能幫助文件。

來源:http://smartic.us/2009/04/06/code-folding-in-vim/