Vim quickfix 与 loclist:把编译错误变成可跳转清单
更新时间:2026-08-30。本文是
languages/vim/主题高手层第 4 篇(A2:PlantUML + 机制 + ≥2 实测 + ≥2 交叉引用)。
本文要回答的问题
- quickfix 是什么?为什么比"看报错再手动跳"快?
:make和:grep怎么把结果灌进 quickfix?- quickfix 和 loclist 有什么区别?
一、机制:quickfix 是一个"错误/结果清单"窗口
quickfix 是 Vim 内置的一个全局结果列表窗口。你运行 :make(调用外部 make)、:grep(调用外部 grep),Vim 解析它们的输出(靠 errorformat),把"文件:行号:信息"提取成条目。然后你在清单里上下移动,回车就跳过去。
二、quickfix 实战:编译 C
在本站 cpu-demo 里改坏一行,制造编译错误:
vim
:make " 调用 make,报错自动进 quickfix
:copen " 打开 quickfix 窗口看清单
:cn " 跳到下一个错误(current next)
:cp " 上一个
:cclose " 关窗口报错 main.c:42: 未声明 → 回车直接定位到 main.c 第 42 行。比肉眼看终端输出再 :42 快得多。
三、grep 进 quickfix
vim
:grep -r "TODO" src/ " rg/grep 结果进 quickfix
:copen " 看全部匹配
:cn " 逐个跳配合本站 搜索替换 的全局改,先 grep 出范围再批量处理。
四、loclist vs quickfix
| 特性 | quickfix | loclist |
|---|---|---|
| 作用域 | 全局唯一 | 每个窗口独立 |
| 来源 | :make :grep | :lvimgrep :lmake |
| 窗口命令 | :copen :cn | :lopen :lnext |
loclist 适合"在分屏的一个窗口里单独跑一次搜索",不影响别的窗口的 quickfix。
五、与金字塔衔接
:make直接吃 demos 的 Makefile;- 跳转依赖 缓冲区切换;
- 错误格式解析属 vimscript 的
errorformat配置范畴。
一句话总结
:make / :grep 的结果经 errorformat 解析进 quickfix 清单,:copen 看、:cn/:cp 在错误间跳、回车直达文件行;loclist 是每窗口独立的同类清单——把编译/搜索结果变成可跳转导航。
上一篇:Vim 折叠 下一篇:Vim diff 模式:对比与合并