vim 代碼摺疊

問題:怎樣在vim中實現代碼摺疊功能?

解決方法:直接使用vim自帶的快捷鍵和命令,便可以實現功能強大的摺疊

小試摺疊:
1 :set fdm=marker 在vim中執行該命令
2 5G 將光標跳轉到第5行
3 zf10G 摺疊第5行到第10行的代碼,vim會在摺疊的開始和結束自動添加三個連續的花括號作爲標記
4 zR 打開所有摺疊
5 zM 關閉所有摺疊
6 zE 刪除所有的摺疊標籤
7 退出vim窗口再次打開,執行2-6步。依然可以摺疊,但是沒有標記了。重新打開後摺疊信息會丟失。

摺疊方法:
1 manual (不常用)默認摺疊方法,如上面第7步即爲該方法,關閉vim摺疊會丟失。如果想保持摺疊信息,可運行 :mkview 命令,重啓後用 :loadview 命令回覆。該命令生成的緩存文件位於 ~/.vim/view 文件夾中。移動或重命名文件,摺疊信息依然會丟失。
2 indent (常用)縮進摺疊方法,相同的縮進中代碼會被摺疊。
3 syntax (不常用)語法高亮摺疊,在c/c++中會摺疊花括號部分,其它格式代碼中有的不能自動摺疊。
4 marker (常用)標記摺疊方法,如上面1-6所使用的方法。關閉vim摺疊信息不會丟失,而且易用控制和標註。
5 還有兩種 diff 和 expr,目前我還沒有用過。

具體介紹:
1 以 marker 爲例,可以在vim中運行 :set fdm=marker 來設置摺疊方法設置。摺疊方法的時候,= 兩邊不能有空格。也可以將該命令添加到~/.vimrc中,實現vim自動加載。
2 在使用小試摺疊中 2 3 步摺疊的時候,vim會自動添加三個連續的花括號作爲標記,可在開始的花括號前添加介紹,花括號後添加級別號,級別號不能爲0。如:/*摺疊介紹{{{1*/
/*}}}*/
3 級別的定義稍顯複雜。在一般編碼中,通常把不需要修改的代碼添加標記摺疊。沒有必要在給摺疊分等級。如果想快速摺疊就切換爲indent摺疊方面,適用於任何有縮進的代碼。

摺疊命令:
1 zf 創建摺疊,可以按照前面的方式進行摺疊,也可以選中代碼後進行摺疊。
2 zF 在當前行創建摺疊。當一開始就計劃要摺疊所寫代碼的時候,可以用該命令創建一對摺疊符號,然後再往裏面填寫內容。
3 :5,10fo 在vim中運行該命令會在摺疊 5-10 行中的代碼,可以用其它數字代替之。
4 zd 刪除光標下的摺疊。
5 zD 刪除光標下的摺疊,以及嵌套的摺疊。
6 zE 刪除窗口內的所有摺疊。僅當 manual 和 marker 摺疊方法下有效。

打開和關閉摺疊:
1 zo 打開光標下的摺疊。
2 zO 打開光標下的摺疊,以及嵌套的摺疊。
3 zc 關閉光標下的摺疊。
4 zC 關閉光標下的摺疊,以及嵌套的摺疊。
5 za 當光標在關閉摺疊上時,打開之。在打開摺疊上時,關閉之。
6 zA 和za類似,不過對當前摺疊和其嵌套摺疊都有效。
7 zv 打開當前光標所在摺疊,僅打開足夠的摺疊使光標所在的行不被摺疊。
8 zr和zm 一層一層打開摺疊和一層一層關閉摺疊,這兩個命令會遞減和遞增一個叫foldlevel的變量。如果你發現zm和zr不靈了,那有可能是你連續按的zr或zm次數多了,只要多按幾次讓foldlevel回到正常狀態即可。執行以下zR和zM也可直接讓foldlevel回到正常狀態。
9 zR和zM 打開所有摺疊,設置foldlevel爲最高級別。關閉所有摺疊,設置foldlevel爲0。

在摺疊間移動:
1 [z 到當前打開摺疊的開始。如果已在開始處,移到包含這個摺疊的摺疊開始處。
2 ]z 到當前打開摺疊的結束。如果已在結束處,移到包含這個摺疊的摺疊結束處。
3 zj 把光標移動到下一個摺疊的開始處。
4 zk 把光標移動到前一個摺疊的結束處。

參考:
在vim中運行 :h Folding 命令,查看摺疊的幫助文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章