標籤:vim zf 摺疊 fdm folding
問題:怎樣在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 命令,查看摺疊的協助文檔。
0007 vim程式碼摺疊功能功能