跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

Neovim 配置 C/C++ 开发环境

Neovim 配置 C/C++ 开发环境的完整方案。通过安装 clangd、ripgrep、fd 等外部工具,结合 lazy.nvim 管理插件(telescope、nvim-lspconfig、cmp、treesitter),实现类似 VSCode 的文件搜索、全局查找、跳转定义及补全功能。配置需包含 init.lua 基础设置与 LSP 绑定快捷键。针对大型工程,建议生成 compile_commands.json 以优化 clangd 索引,并忽略构建目录以提升性能。

无尘发布于 2026/3/30更新于 2026/5/2429 浏览

一、目标功能对齐

VSCode 功能Neovim 对应
打开工程nvim .
文件搜索Telescope
全局搜索ripgrep
跳函数定义LSP(clangd)
查函数/变量引用LSP
悬浮文档LSP
代码补全nvim-cmp
代码结构Tree-sitter

核心配置项包括 Telescope、LSP、nvim-cmp 和 Tree-sitter。

二、依赖的外部工具

确保系统已安装以下工具:

sudo apt install -y clangd ripgrep fd-find
ln -s $(which fdfind) ~/.local/bin/fd

检查版本:

clangd --version
rg --version
fd --version

三、Neovim 配置目录

创建配置目录:

mkdir -p ~/.config/nvim

主要配置文件为:

~/.config/nvim/init.lua

四、最小 VSCode 风格配置

将以下内容复制到 init.lua:

---------------------------------------------------- 基础设置--------------------------------------------------
vim.g.mapleader = " "
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = "a"
vim.opt.clipboard = "unnamedplus"
vim.opt.termguicolors = true
vim.opt.signcolumn = "yes"
---------------------------------------------------- 大文件优化(非常重要)--------------------------------------------------
vim.api.nvim_create_autocmd("BufReadPre", {
    callback = function()
         ok, stat = (vim.loop.fs_stat, vim.fn.expand())
         ok  stat  stat.size > ** 
            vim.opt_local.syntax = 
            vim.opt_local.swapfile = 
            vim.opt_local.undofile = 
        
    ,
})

 lazypath = vim.fn.stdpath() .. 
  vim.loop.fs_stat(lazypath) 
    vim.fn.system({, , , , , lazypath,})

vim.opt.rtp:prepend(lazypath)
().setup({

{, dependencies = {},},

{,},

{, dependencies = {,},},

{, build = ,},
})

 telescope = ()
vim.keymap.set(, , telescope.find_files)
vim.keymap.set(, , telescope.live_grep)
vim.keymap.set(, , telescope.buffers)

 lspconfig = ()
lspconfig.clangd.setup({
    cmd = {, },
})

vim.api.nvim_create_autocmd(, {
    callback = 
         opts = { buffer = ev.buf }
        vim.keymap.set(, , vim.lsp.buf.definition, opts)
        vim.keymap.set(, , vim.lsp.buf.references, opts)
        vim.keymap.set(, , vim.lsp.buf.implementation, opts)
        vim.keymap.set(, , vim.lsp.buf.hover, opts)
    ,
})

 cmp = ()
cmp.setup({
    mapping = {
        [] = cmp.mapping.confirm({  =  }),
    },
    sources = {{ name =  }},
})

().setup({
    ensure_installed = {, },
    highlight = { enable =  },
})
local
pcall
"%"
if
and
and
1024
1024
2
then
"off"
false
false
end
end
---------------------------------------------------- 插件管理:lazy.nvim--------------------------------------------------
local
"data"
"/lazy/lazy.nvim"
if
not
then
"git"
"clone"
"--filter=blob:none"
"https://github.com/folke/lazy.nvim.git"
"--branch=stable"
end
require
"lazy"
-------------------------------------------------- 文件 / 内容搜索(VSCode 核心)--------------------------------------------------
"nvim-telescope/telescope.nvim"
"nvim-lua/plenary.nvim"
-------------------------------------------------- LSP(函数/变量跳转)--------------------------------------------------
"neovim/nvim-lspconfig"
-------------------------------------------------- 自动补全--------------------------------------------------
"hrsh7th/nvim-cmp"
"hrsh7th/cmp-nvim-lsp"
-------------------------------------------------- 语法树(代码结构)--------------------------------------------------
"nvim-treesitter/nvim-treesitter"
":TSUpdate"
---------------------------------------------------- Telescope 快捷键(文件 / 搜索)--------------------------------------------------
local
require
"telescope.builtin"
"n"
"<leader>ff"
"n"
"<leader>fg"
"n"
"<leader>fb"
---------------------------------------------------- LSP:clangd(C/C++ 核心)--------------------------------------------------
local
require
"lspconfig"
"clangd"
"--background-index"
---------------------------------------------------- LSP 快捷键(像 VSCode 一样)--------------------------------------------------
"LspAttach"
function(ev)
local
"n"
"gd"
"n"
"gr"
"n"
"gi"
"n"
"K"
end
---------------------------------------------------- 补全设置--------------------------------------------------
local
require
"cmp"
"<Tab>"
select
true
"nvim_lsp"
---------------------------------------------------- Tree-sitter--------------------------------------------------
require
"nvim-treesitter.configs"
"c"
"cpp"
true

五、首次启动

在工程目录下运行:

cd /home/wls/wm_prject/xm
nvim .

首次启动会自动下载插件,可能需要等待 1~2 分钟。

六、常用快捷键

文件搜索

空格 + f + f (Space ff)

全工程搜索

空格 + f + g (Space fg) 输入函数名或变量名即可秒搜。

跳函数定义

gd

查函数/变量被谁调用

gr

看函数说明

K

七、大型工程关键提醒

1. clangd 编译参数

若发现部分宏或 include 找不到,通常缺少 compile_commands.json。

可执行:

bear -- make

或从构建系统导出。

2. 忽略目录

对于过大工程,可在配置中添加:

vim.opt.wildignore = {"out/*", ".git/*", "build/*"}

八、总结

✔ 像 VSCode 一样浏览代码 ✔ 查函数调用关系 ✔ 搜索变量 ✔ 打开超大工程不卡

超过 70% 嵌入式工程师的编辑器水平。

目录

  1. 一、目标功能对齐
  2. 二、依赖的外部工具
  3. 三、Neovim 配置目录
  4. 四、最小 VSCode 风格配置
  5. 五、首次启动
  6. 六、常用快捷键
  7. 文件搜索
  8. 全工程搜索
  9. 跳函数定义
  10. 查函数/变量被谁调用
  11. 看函数说明
  12. 七、大型工程关键提醒
  13. 1. clangd 编译参数
  14. 2. 忽略目录
  15. 八、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 2026 年高校论文 AI 率新规解读:哪些学校已明确 AIGC 检测要求
  • 多线程编程:CAS 原理与哈希表实现
  • Lua 元表与元方法详解
  • 2025 年国产 AI 模型深度测评:文心大模型 4.5、DeepSeek、Qwen3 能力对比
  • RTTR 与模板元编程:现代 C++ 反射技术解析
  • Llama-Factory 实现模型蒸馏:Teacher-Student 架构探索
  • Claude Code Rules 配置实战:规范管理与 Token 优化
  • 海螺 AI 多模态架构解析与接入指南
  • C/C++按位取反操作详解与代码示例
  • Vheer:免费免登录的一键 AI 绘画视频生成与智能编辑工具
  • AI Agent:2025 年大模型竞争的关键战场
  • 前端虚拟列表深度拆解
  • MySQL 动态分区管理:自动化与优化实践
  • Flutter 三方库 jwt_io 的鸿蒙化适配指南
  • C++ STL 哈希表原理与模拟实现
  • 医疗大模型:数据与知识双轮驱动的医学推理与临床决策支持
  • 红黑树数据结构与实现
  • Claude Agent Skills 工具箱:7 大开源项目解析与实战指南
  • C/C++回调函数用法详解
  • MySQL 8.4 数据库 Windows 安装与配置教程

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online