为什么你需要代码折叠
写代码时,尤其是处理大型文件,函数、类、条件判断层层嵌套,滚动条拉来拉去,眼睛都花了。这时候,能一键收起不相关的部分,只看核心逻辑,效率立马提升。Vim 原生支持代码折叠,但配置复杂,操作反直觉。好在有插件,让这件事变得简单又顺手。
常用折叠插件推荐
真正用起来顺的,还得是社区里口碑好的那几个。
SyntaxFolds
这个插件按语法结构自动折叠,比如 Python 的函数、类,JavaScript 的块级作用域。不需要手动标记,打开文件就自动生效。适合不想折腾的人。
Plug 'vim-scripts/SyntaxFolds'装好后,在 .vimrc 里加一句:
let g:use_syntax_folding = 1刷新一下,代码块就自动可折叠了。FastFold
它不是独立折叠方案,而是增强其他折叠方式的“加速器”。原生 Vim 折叠有个毛病——保存文件或切换窗口时,折叠状态丢了。FastFold 能记住你折到哪,回来还是原来的样子,体验流畅很多。
Plug 'Konfekt/FastFold'装上就行,基本不用额外配置,和其他插件搭配使用效果最佳。
IndentLine + 折叠配合使用
虽然 IndentLine 不是折叠插件,但它显示缩进线,能帮你一眼看出哪些块被折起来了。特别是 Python 这种靠缩进的语言,配上之后结构清晰得像画了地图。
Plug 'Yggdroot/indentline'实际使用场景
比如你在改一个老项目的 views.py,几百行代码堆在一个文件里。打开 SyntaxFolds 后,把所有函数都折起来,快速扫一遍名字,找到要改的那个,点开直接动手。旁边的 if-else 嵌套太深?鼠标一点全收起来,专注当前逻辑。
再比如写前端组件,Vue 单文件里 <script>、<template>、<style> 三块内容,用标记折叠(marker folding)分别包起来,一键切换区域,比上下翻省事多了。
小技巧:自定义折叠标记
想在哪折就在哪折,用 Vim 的标记折叠最自由。在代码里插入 {{{ 和 }}} 就能圈出一块:
// {{{ 工具函数组
function utilA() { ... }
function utilB() { ... }
// }}}
然后用 zc 折起,zo 展开,za 切换状态。配合 FastFold,关掉再打开还是折着的。
性能与取舍
插件越多,Vim 启动越慢。如果只是写写脚本,SyntaxFolds + FastFold 组合足够。要是项目特别大,建议搭配 vim-plug 的懒加载,只在打开特定类型文件时才加载折叠功能。
有些人习惯用大纲插件如 vista.vim 或 coc.nvim 的符号树来跳转,但折叠的优势在于不离开当前页面,眼不跳、心不乱。就像看书时用便签纸盖住段落,只读想看的那几句。