用 Neovim 优雅地构建/运行 C/C++(Quick-c)
让 C/C++ 在 Neovim 里“即写即跑”。Quick-c 以最少操作完成从编译、运行到调试的全流程:快捷键触发、全程异步、跨平台免折腾。支持 Make、多文件与项目级配置,开箱即用。
项目地址:https://github.com/AuroBreeze/quick-c
✨ 概览亮点
-
🚀 一键构建/运行(异步):
QuickCBuild、QuickCRun、QuickCBR(构建并运行) -
🐞 调试集成:
QuickCDebug使用nvim-dap与codelldb -
🌐 跨平台:自动选择可用编译器(gcc/clang/cl)与合适运行方式(PowerShell/终端)
-
📁 灵活输出位置:默认将可执行文件输出到源码所在目录;可通过配置修改
-
🔌 终端兼容:优先将命令发送到
betterTerm(如已安装),否则使用 Neovim 内置终端 -
🔧 Make 集成:自动发现 Makefile、列出目标、
.PHONY优先、参数输入与记忆- 🧭
-qp无结果回退-pn;Windows 风格路径目标兼容 - 🧪
prefer不可执行时,解析阶段自动用可用 make(make/mingw32-make/nmake)探测;运行仍按你的prefer
- 🧭
-
🔭 Telescope 增强:内置 Makefile 预览、源文件多选、快捷切换 .PHONY
-
🖥️ BetterTerm/内置终端:自动选择/复用终端、跨平台兼容
-
📦 多文件构建:支持一次构建/运行多个源文件
-
📝 自定义命令:
QuickCMakeCmd自定义完整命令(预填<prefer> -C <cwd>,可编辑后发送到终端) -
✅ 配置检查:
QuickCCheck检查配置(类型/路径/可执行性)并输出报告 -
🧠 LSP 集成:一键为当前文件目录生成或使用指定
compile_commands.json供 clangd 等 LSP 使用 -
🔎 快速跳转:构建时自动解析错误与警告,支持 Telescope 快速跳转
🖼️ 效果图集
-
多选文件编译
-
Makefile 支持
-
项目级配置
⏱️ 一分钟上手
- 省操作:从“写代码”到“看到输出”,一键到位,不再手打命令。
- 不打扰:异步执行,不卡编辑器;终端聚焦策略可控。
- 真跨平台:Windows/Linux/macOS 通吃,MSVC/MinGW/Clang 全支持。
- 贴近项目:自动找 Makefile,支持项目级
.quick-c.json,团队可共享配置。
🧩 安装
使用 lazy.nvim:
{
"AuroBreeze/quick-c",
dependencies = {
"CRAG666/betterTerm.nvim",
"mfussenegger/nvim-dap",
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim",
},
lazy = true,
event = "VeryLazy",
-- 1) 文件类型触发(打开 C/C++ 文件时加载)
ft = {
"c", "cpp" },
-- 2) 快捷键触发(首次按键时加载,映射由插件在 setup 时注入)
keys = {
{
"<leader>cqb", desc = "Quick-c: Build" },
{
"<leader>cqr", desc = "Quick-c: Run" },
{
"<leader>cqR", desc = "Quick-c: Build & Run" },
{
"<leader>cqD", desc = "Quick-c: Debug" },
{
"<leader>cqM", desc = "Quick-c: Make targets (Telescope)" },
{
"<leader>cqS", desc = "Quick-c: Select sources (Telescope)" }, -- 使用tab进行多选
{
"<leader>cqf", desc = "Quick-c: Open quickfix (Telescope)" },
},
-- 3) 命令触发(调用命令时加载,等同“命令提前加载”)
cmd = {
"QuickCBuild", "QuickCRun", "QuickCBR", "QuickCDebug",
"QuickCMake", "QuickCMakeRun", "QuickCMakeCmd",
"QuickCCompileDB", "QuickCCompileDBGen", "QuickCCompileDBUse",
"QuickCQuickfix", "QuickCCheck",
},
config = function()
require("quick-c").setup()
end,
}
🚀 快速开始(详细)
打开任意 *.c 或 *.cpp 文件:
- 构建:
:QuickCBuild或<leader>cqb - 运行:
:QuickCRun或<leader>cqr - 构建并运行:
:QuickCBR或<leader>cqR - 调试:
:QuickCDebug或<leader>cqD
多文件:
- C:
:QuickCBuild main.c util.c - C++:
:QuickCBR src/main.cpp src/foo.cpp - 运行:
:QuickCRun src/main.cpp src/foo.cpp
Telescope 源选择器(推荐):
<leader>cqS打开,Tab 多选(Shift+Tab 反向,Ctrl+Space 切换不移动)- 回车选择 Build / Run / Build & Run
说明:列表显示相对 :pwd 的路径,内部使用绝对路径构建与运行。
默认输出名为当前文件名(Windows 会追加 .exe);如需自定义输出名,构建时可在提示中输入。
输出名与缓存:
- 多文件构建:总是弹出“Output name”,同一源集合记忆上次输入。
- 单文件构建:默认使用文件名。
📦 依赖
- Neovim 0.8+
- lazyvim config
- 至少一种 C/C++ 编译器(按平台自动探测):
- Windows:
gcc/g++(MinGW)或cl(MSVC)或clang/clang++ - Unix:
gcc/g++或clang/clang++
- Windows:
- 可选:
betterTerm(若安装则优先使用)- 调试:
nvim-dap与codelldb - Make 选择器:
nvim-telescope/telescope.nvim与nvim-lua/plenary.nvim
⏱️ 一分钟上手(建议流程)
- 安装插件并打开一个 C/C++ 文件。
<leader>cqb构建 →<leader>cqr运行。- Make 项目:
<leader>cqM选择目录与目标,或:QuickCMakeRun <target>。 - 多文件:
<leader>cqS选择源,Tab 多选后选择 Build/Run/BR。 - 自检:
:QuickCCheck。
🎯 使用场景
- 学习/刷题:快速编译运行小程序,立即查看输入输出。
- 课程/作业:每个项目一个
.quick-c.json,同学之间共享一致的设置。 - 小型工程:配合 Make 使用,选择目标后直接跑,支持自定义参数与记忆。
- 混合环境:Windows 下 prefer Force + 自定义命令/WSL,仍可继续执行任务。
❓常见问题(FAQ)
- 没有找到 make 或目标?
- Windows 可安装 MinGW(
mingw32-make),或使用 MSYS2 的make; prefer指向不可执行也没关系:解析会自动用可用的 make 探测,运行仍按你的prefer;- 也可用
:QuickCMakeCmd完全自定义命令。
- Windows 可安装 MinGW(
- 切目录后配置没生效?
- 插件会在
DirChanged自动重载(含防抖),也可手动:QuickCReload。
- 插件会在
- 键位冲突?
- 插件映射使用
unique=true;当你修改/禁用键位时,默认自动解除默认旧映射(keymaps.unmap_defaults = true)。
- 插件映射使用
✅ 现在就试试
- Star & 安装:https://github.com/AuroBreeze/quick-c
- 试运行:打开任意
*.c/*.cpp,直接<leader>cqb-><leader>cqr - Make 项目:
<leader>cqM选择目标;或:QuickCMakeCmd自定义整行命令