1. 折疊方式
可用選項 'foldmethod' 來設定折疊方式:set fdm=*****。
有 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會自動的對大括號的中間部分進行折疊,我們可以直接使用這些現成的折疊成果。
在可折疊處(大括號中間):
zc 折疊
zC 對所在范圍內所有嵌套的折疊點進行折疊
zo 展開折疊
zO 對所在范圍內所有嵌套的折疊點展開
[z 到當前打開的折疊的開始處。
]z 到當前打開的折疊的末尾處。
zj 向下移動。到達下一個折疊的開始處。關閉的折疊也被計入。
zk 向上移動到前一折疊的結束處。關閉的折疊也被計入。
當使用marker方式時,需要用標計來標識代碼的折疊,系統默認是{{{和}}},最好不要改動之:)
我們可以使用下面的命令來創建和刪除折疊:
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" 時有效。