2012-08-15 120 views
5

當我在Vim中查看包含詳細註釋的長代碼文件時,我希望能夠加載具有註釋摺疊但其他所有內容展開的文件。當前摺疊配置我有我的.vimrc是:當在Vim中打開文件時僅摺疊註釋

set foldmethod=syntax 
set nofoldenable 

這樣,當我要開始做褶皺,我就可以開始執行z命令。但是有沒有辦法只摺疊(塊)評論?

回答

6

您可以執行全局命令關閉所有的塊註釋褶皺:

:g/^\/\*/foldc 

這將體現在與/*(公共塊註釋指示符)開頭的行執行:help foldclose。請注意在這種情況下/*需要轉義。如果使用不同的分隔符(例如:g#^/\*#foldc),則不需要轉義/。如果你想自動發生這種情況,你可以將它添加到自動命令中。例如:

set fdm=syntax fen 
augroup closeCommentFolds 
    au! 
    au FileType javascript %foldo | g/^\/\*/foldc 
    au FileType ruby %foldo | g/^=begin/foldc 
augroup end 

注意,在這些例子中的正則表達式的^字符指定的/*和比賽是在該行的開頭。如果你想匹配,如果行的開頭和匹配之間有空格,則使用^\s*而不是^%foldo將打開所有摺疊,以便設置foldenable,但它不會摺疊所有內容(只是在本例中爲註釋)。

+0

這是一個偉大的ansewr。我學到了很多。但是,它並沒有開箱即用。我必須做......設置fen | %foldopen | %g ^/\ * @調用SilentFold()',其中'SilentFold'是我定義的函數,用於抑制使用'/*...*/'樣式的行的摺疊錯誤,即使它不是塊註釋(是的,我反對,但我沒有寫代碼)並使用'普通zc'。此外,如果您發現我所做的改進了帖子,請隨時從中抽取。 (它太冗長了,我也很想知道爲什麼。)+1謝謝! – 2012-08-15 19:07:02

+0

其實我的回答也很奇怪......它是將不是評論的東西,即「{...}」塊摺疊起來。 – 2012-08-15 19:11:47

+0

@Kazark好吧,對於混亂感到抱歉。我相信我的更新答案現在可以正常工作。讓我知道。 – Conner 2012-08-15 19:47:57