用 Neovim 优雅地构建/运行 C/C++(Quick-c)

Source

用 Neovim 优雅地构建/运行 C/C++(Quick-c)

让 C/C++ 在 Neovim 里“即写即跑”。Quick-c 以最少操作完成从编译、运行到调试的全流程:快捷键触发、全程异步、跨平台免折腾。支持 Make、多文件与项目级配置,开箱即用。

项目地址:https://github.com/AuroBreeze/quick-c

✨ 概览亮点

  • 🚀 一键构建/运行(异步)QuickCBuildQuickCRunQuickCBR(构建并运行)

  • 🐞 调试集成QuickCDebug 使用 nvim-dapcodelldb

  • 🌐 跨平台:自动选择可用编译器(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”,同一源集合记忆上次输入。
  • 单文件构建:默认使用文件名。

📦 依赖


⏱️ 一分钟上手(建议流程)

  1. 安装插件并打开一个 C/C++ 文件。
  2. <leader>cqb 构建 → <leader>cqr 运行。
  3. Make 项目:<leader>cqM 选择目录与目标,或 :QuickCMakeRun <target>
  4. 多文件:<leader>cqS 选择源,Tab 多选后选择 Build/Run/BR。
  5. 自检::QuickCCheck

🎯 使用场景

  • 学习/刷题:快速编译运行小程序,立即查看输入输出。
  • 课程/作业:每个项目一个 .quick-c.json,同学之间共享一致的设置。
  • 小型工程:配合 Make 使用,选择目标后直接跑,支持自定义参数与记忆。
  • 混合环境:Windows 下 prefer Force + 自定义命令/WSL,仍可继续执行任务。

❓常见问题(FAQ)

  • 没有找到 make 或目标?
    • Windows 可安装 MinGW(mingw32-make),或使用 MSYS2 的 make
    • prefer 指向不可执行也没关系:解析会自动用可用的 make 探测,运行仍按你的 prefer
    • 也可用 :QuickCMakeCmd 完全自定义命令。
  • 切目录后配置没生效?
    • 插件会在 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 自定义整行命令