vim 中过滤代码靠搜索与可视模式,折叠依赖 foldmethod 与命令协同;先搜索定位再折叠无关内容,语法/缩进/标记法各适场景,配合 zo/zc/zj/zk 等命令高效导航,并通过 mkview/loadview 持久化状态。

在 Linux 中用 Vim 过滤代码段主要靠搜索和可视模式筛选,折叠则依赖折叠方法与命令协同控制——两者不是同一机制,但配合使用能大幅提升超长文件的可读性。关键在于先用搜索快速定位目标区域,再用合适折叠方式收拢无关内容。
快速过滤:用 / 和 :g 精准聚焦代码
“过滤”在 Vim 中不指删除,而是临时高亮或提取关注部分:
-
行级搜索定位:输入
/pattern(如/func_name)跳转到匹配处;按n/N循环查找;搭配zz居中显示当前行。 -
多行匹配筛选:执行
:g/pattern/p列出所有含 pattern 的行;:g!/pattern/d删除不匹配的行(慎用,建议先:copy备份)。 -
可视模式抽离:按
v或V选中若干行,再用:keepjumps normal! g?'等命令处理选区,或直接y复制到寄存器备用。
智能折叠:按语言选对 foldmethod
折叠不是手动收起几行,而是让 Vim 自动识别结构并分层收放:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
语法折叠(推荐多数场景):确保文件类型正确(
:set ft=python),运行:set foldmethod=syntax。C/Java/Python 等会自动折叠函数、类、if 块、注释块。 -
缩进折叠(适合 Python/YAML):执行
:set foldmethod=indent,Vim 按shiftwidth层级将同缩进块视为一个折叠单元。 -
标记折叠(可控性强):在代码中插入
{{{1开始、}}}结束(如# 数据处理模块 {{{1),再设:set foldmethod=marker。
折叠操作:展开、收拢、跳转一步到位
光设好方法不够,得用对命令才能高效导航:
-
局部展开/收拢:光标停在折叠行上,
zo展开当前块,zc折叠;zO展开含子折叠的整个层级,zC反向全部收起。 -
跨折叠移动:
zj跳到下一个折叠起始,zk跳到上一个折叠末尾;[z和]z在已展开的折叠边界间快速切换。 -
临时全显与恢复:
zR展开全部便于全局搜索;编辑后用zM一键全折,再用zr逐层展开需要的部分。
持久化与视觉优化:让折叠真正好用
避免每次打开重配,也别让折叠变成“看不见的黑盒”:
-
保存视图状态:在
~/.vimrc加两行:autocmd BufWinLeave * silent! mkviewautocmd BufWinEnter * silent! loadview
下次打开仍保持你离开时的折叠状态。 -
增强可视提示:启用折叠栏
:set foldcolumn=2,左侧显示箭头;自定义折叠行文字:set foldtext=v:val或更详细的表达式,让+3 class Config (28 lines)一目了然。 -
应对巨函数或生成代码:光标放在
{或(上按zf%,自动折叠到匹配符号;也可用100,250zf手动划定任意行区间折叠。










