1. 折疊方式
可用選項(xiàng) 'foldmethod' 來(lái)設(shè)定折疊方式:set fdm=*****。
有 6 種方法來(lái)選定折疊:
manual 手工定義折疊
indent 更多的縮進(jìn)表示更高級(jí)別的折疊
expr 用表達(dá)式來(lái)定義折疊
syntax 用語(yǔ)法高亮來(lái)定義折疊
diff 對(duì)沒(méi)有更改的文本進(jìn)行折疊
marker 對(duì)文中的標(biāo)志折疊
注意,每一種折疊方式不兼容,如不能即用expr又用marker方式,我主要輪流使用indent和marker方式進(jìn)行折疊。
使用時(shí),用:set fdm=marker 命令來(lái)設(shè)置成marker折疊方式(fdm是foldmethod的縮寫)。
要使每次打開vim時(shí)折疊都生效,則在.vimrc文件中添加設(shè)置,如添加:set fdm=syntax,就像添加其它的初始化設(shè)置一樣。
2. 折疊命令
選取了折疊方式后,我們就可以對(duì)某些代碼實(shí)施我們需要的折疊了,由于我使用indent和marker稍微多一些,故以它們的使用為例:
如果使用了indent方式,vim會(huì)自動(dòng)的對(duì)大括號(hào)的中間部分進(jìn)行折疊,我們可以直接使用這些現(xiàn)成的折疊成果。
在可折疊處(大括號(hào)中間):
zc 折疊
zC 對(duì)所在范圍內(nèi)所有嵌套的折疊點(diǎn)進(jìn)行折疊
zo 展開折疊
zO 對(duì)所在范圍內(nèi)所有嵌套的折疊點(diǎn)展開
[z 到當(dāng)前打開的折疊的開始處。
]z 到當(dāng)前打開的折疊的末尾處。
zj 向下移動(dòng)。到達(dá)下一個(gè)折疊的開始處。關(guān)閉的折疊也被計(jì)入。
zk 向上移動(dòng)到前一折疊的結(jié)束處。關(guān)閉的折疊也被計(jì)入。
當(dāng)使用marker方式時(shí),需要用標(biāo)計(jì)來(lái)標(biāo)識(shí)代碼的折疊,系統(tǒng)默認(rèn)是{{{和}}},最好不要改動(dòng)之:)
我們可以使用下面的命令來(lái)創(chuàng)建和刪除折疊:
zf 創(chuàng)建折疊,比如在marker方式下:
zf56G,創(chuàng)建從當(dāng)前行起到56行的代碼折疊;
10zf或10zf+或zf10↓,創(chuàng)建從當(dāng)前行起到后10行的代碼折疊。
10zf-或zf10↑,創(chuàng)建從當(dāng)前行起到之前10行的代碼折疊。
在括號(hào)處zf%,創(chuàng)建從當(dāng)前行起到對(duì)應(yīng)的匹配的括號(hào)上去((),{},[],<>等)。
zd 刪除 (delete) 在光標(biāo)下的折疊。僅當(dāng) 'foldmethod' 設(shè)為 "manual" 或 "marker" 時(shí)有效。
zD 循環(huán)刪除 (Delete) 光標(biāo)下的折疊,即嵌套刪除折疊。
僅當(dāng) 'foldmethod' 設(shè)為 "manual" 或 "marker" 時(shí)有效。
zE 除去 (Eliminate) 窗口里“所有”的折疊。
僅當(dāng) 'foldmethod' 設(shè)為 "manual" 或 "marker" 時(shí)有效。