写代码时,文件越长越容易找不到北。就像家里堆满杂物的房间,找个东西得翻半天。Vim 本身支持代码折叠,但默认用起来有点僵硬。装个合适的代码折叠插件,立马像请了位收纳师,函数、类、区块一键收起,重点内容一目了然。
常用的 Vim 代码折叠插件有哪些?
目前用得比较多的是 vim-foldify 和 SimpylFold,前者轻量通用,后者专为 Python 设计。如果你写 Python,SimpylFold 能按 def 和 class 自动折叠,不用手动设规则。
另一个广受好评的是 coiled-snake,它结合了语法分析和缩进逻辑,折叠更智能。比如你在写一个 Django 视图函数,里面嵌了好几层 if 和 for,它能准确识别结构,不会把不该折的也折进去。
怎么安装和配置?
用 Vundle 或 Plug 安装都很简单。比如你用 vim-plug,在 .vimrc 里加一行:
Plug 'tmhedberg/SimpylFold'
然后在命令模式执行 :PlugInstall 就装好了。接着加几行配置,开启基于语法的折叠:
let g:SimpylFold_fold_docstring = 1
autocmd BufReadPre *.py setlocal foldmethod=expr foldexpr=SimpylFold()
set foldlevelstart=99
保存后重新打开 Python 文件,你会发现每个函数和类左边多了一个 + 号,按 za 就能展开或收起。
实际使用中的小技巧
有时候你不希望整个文件一打开就全展开,可以先把 foldlevelstart 设成 0,进入文件后再手动调。比如你只想看函数名,不看实现,这样设置就很高效。
另外,用 zc 关闭当前折叠,zo 打开,zR 展开所有,zM 折叠全部,这几个快捷键熟了之后,翻代码比滑动屏幕快多了。
就像整理书架,把不常用的书推到后面,只留标签朝外,找起来才不费劲。代码也是这样,信息密度高了,眼睛才不容易累。