VIM設置代碼摺疊
今天看了一下別人寫的程序的源代碼,發現是用vim寫的,代碼中有趣是用vim來摺疊代碼,一開始我以爲是用插件的,後來上網查了查,得出以下使用方面的技巧。
1. 摺疊方式
可用選項來設定摺疊方式:
可在Vim 配置文件中設置 set fdm=XXX
可直接在文件中使用註釋調用vim命令 /* vim: set fdm=XXX: */
有6種方法來選定摺疊:
1 2 3 4 5 6 | manual 手工定義摺疊 indent 更多的縮進表示更高級別的摺疊 expr 用表達式來定義摺疊 syntax 用語法高亮來定義摺疊 diff 對沒有更改的文本進行摺疊 marker 對文中的標誌摺疊 |
注意,每一種摺疊方式不兼容,如不能既用expr又用marker方式,我主要輪流使用indent和marker方式進行摺疊。
使用時,用 set fdm=marker 命令來設置成marker摺疊方式(fdm是foldmethod的縮寫)。
要使每次打開vim時摺疊都生效,則在.vimrc文件中添加設置,如添加:set fdm=syntax,就像添加其它的初始化設置一樣。
2. 摺疊命令
選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用爲例:如果使用了indent方式,vim會自動的對大括號的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。
在可摺疊處(大括號中間):
1 2 3 4 5 6 7 8 | zc 摺疊 zC 對所在範圍內所有嵌套的摺疊點進行摺疊 zo 展開摺疊 zO 對所在範圍內所有嵌套的摺疊點展開 [z 到當前打開的摺疊的開始處。 ]z 到當前打開的摺疊的末尾處。 zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。 zk 向上移動到前一折疊的結束處。關閉的摺疊也被計入。 |
當使用marker方式時,需要用標計來標識代碼的摺疊,系統默認是{{{和}}},最好不要改動
我們可以使用下面的命令來創建和刪除摺疊:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | zf 創建摺疊,比如在marker方式下: zf56G,創建從當前行起到56行的代碼摺疊; 10zf或10zf+或zf10↓,創建從當前行起到後10行的代碼摺疊。 10zf-或zf10↑,創建從當前行起到之前10行的代碼摺疊。 在括號處zf%,創建從當前行起到對應的匹配的括號上去((),{},[],<>等)。 zd 刪除 (delete) 在光標下的摺疊。 僅當 'foldmethod' 設爲 "manual" 或 "marker" 時有效。 zD 循環刪除 (Delete) 光標下的摺疊,即嵌套刪除摺疊。 僅當 'foldmethod' 設爲 "manual" 或 "marker" 時有效。 zE 除去 (Eliminate) 窗口裏“所有”的摺疊。 僅當 'foldmethod' 設爲 "manual" 或 "marker" 時有效。 |