有時候看代碼時,代碼太長看着不方便,特別是閱讀源碼時,需要把不關心的代碼先折疊起來,看自己當前最關注的代碼。vim中自帶了代碼折疊功能。
配置foldmethod可以定義折疊方式,有6種可選方式:
1. manual //手工定義折疊
2. indent //用縮進表示折疊
3. expr //用表達式來定義折疊
4. syntax //用語法高亮來定義折疊
5. diff //對沒有更改的文本進行折疊
6. marker //用標志折疊
2. indent //用縮進表示折疊
3. expr //用表達式來定義折疊
4. syntax //用語法高亮來定義折疊
5. diff //對沒有更改的文本進行折疊
6. marker //用標志折疊
我選用syntax來定義折疊,這種方式比較簡單,但是當配置完這個值后,你打開代碼,就會發現vim默認把所有代碼都折疊了,這顯然不是我想要的,google一番后找到辦法,設置
foldlevelstart為99后,打開默認沒有折疊。
配置:
配置完后就可以在方法上,類上,if-else上,各種迭代器上,你想得到的塊上敲入折疊命令,這里提供最簡單的折疊命令:
zc 關閉折疊
zo 打開折疊
za 打開/關閉折疊互相切換
我的代碼折疊的完整配置:
set foldenable " 開始折疊
set foldmethod=syntax " 設置語法折疊
set foldcolumn=0 " 設置折疊區域的寬度
setlocal foldlevel=1 " 設置折疊層數為
set foldlevelstart=99 " 打開文件是默認不折疊代碼
"set foldclose=all " 設置為自動關閉折疊
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格鍵來開關折疊