本仓库是我的 Neovim 配置,基于 packer.nvim 管理插件,聚焦于 C/C++ 与 CMake 开发,内置 LSP、自动补全、Treesitter、Telescope、Git 集成、调试等常用能力,并提供常用快捷键与工作流示例。
- Neovim ≥ 0.8(推荐最新版)
- Git(用于自动安装 packer.nvim 和插件)
- ripgrep(Telescope
live_grep需用) - C/C++ 开发:
clangd、cmake、g++/clang++(建议通过系统包管理器安装) - 可选:
codelldb(用于 nvim-dap 调试,见下文“调试”)
- 将本配置放到
~/.config/nvim。 - 首次启动 Neovim:会自动安装
packer.nvim并同步插件(如未自动同步,可执行:PackerSync)。 - 安装 LSP/工具:执行
:Mason,安装lua-language-server、clangd、cmake-language-server等。 - 安装 Treesitter 语法:执行
:TSUpdate。 - 享用内置快捷键与工作流(见下文)。
init.lua:入口配置,引导核心与插件模块lua/core/options.lua:基础选项与主题(Tokyonight)lua/core/keymaps.lua:全局与常用插件快捷键lua/plugins/plugins-setup.lua:插件管理与声明(packer.nvim)lua/plugins/*.lua:各插件的独立配置(LSP/补全/树/搜索/状态栏/等)plugin/packer_compiled.lua:packer 自动生成文件(无需手动修改)
- 主题与 UI
- Tokyonight 主题、透明背景、Lualine 状态栏、Bufferline 标签
- 文件与代码导航
- NvimTree 文件树、Telescope 文件/内容/帮助检索
- 语法与语义
- Treesitter 语法高亮与缩进
- LSP:
lua_ls、clangd、cmake、gopls(Go)等(Mason 管理)
- 自动补全
- nvim-cmp + cmp-nvim-lsp + LuaSnip + Friendly Snippets + path/buffer 源
- nvim-autopairs 与补全联动补括号
- Git 集成
- gitsigns 显示增改删标记
- CMake 工程
- vim-cmake 提供生成/编译/运行/清理命令,默认构建目录
build/
- vim-cmake 提供生成/编译/运行/清理命令,默认构建目录
- 其他
- vim-tmux-navigator 跨 pane 导航、注释(Comment.nvim / vim-commentary)、文本替换增强(vim-abolish)
- 基础
- 领导键:
<Space> - 插入 → 正常:
jk
- 领导键:
- 窗口与 Buffer
- 垂直分屏:
<leader>sv;水平分屏:<leader>sh - 切换文件树:
<leader>e - 下/上一个 Buffer:
<leader>l/<leader>h - 关闭当前 Buffer:
<leader>q;强制关闭:<leader>Q
- 垂直分屏:
- 搜索(Telescope)
- 查找文件:
<leader>ff - 全文检索(需 ripgrep):
<leader>fg - 列出 Buffer:
<leader>fb - 帮助标签:
<leader>fh
- 查找文件:
- CMake(vim-cmake)
- 生成:
<leader>g→:CMakeGenerate - 编译:
<leader>b→:CMakeBuild - 运行(自动选择目标):
<leader>rn - 一键 生成+编译+运行:
<leader>rr - 清理:
<leader>c→:CMakeClean
- 生成:
- 实用
- 取消高亮:
<leader>dh - 保存:
<leader>s - 打开终端:
<leader>te - 退出全部:
<leader>qq(含清理 CMake 窗口,保存询问) - 保存并退出全部:
<leader>wq;强制退出全部:<leader>q!
- 取消高亮:
提示:更多具体映射可见 lua/core/keymaps.lua。
- 主题:Tokyonight(Moon 风格,透明背景,边栏/浮窗透明)
- 高亮透明适配:切换配色后自动去除背景色,兼容透明终端
- Lualine 使用 Tokyonight 主题;Bufferline 与 NvimTree 联动偏移
相关配置:lua/core/options.lua、lua/plugins/lualine.lua、lua/plugins/bufferline.lua、lua/plugins/nvim-tree.lua。
- Mason 自动管理与安装 LSP:
lua_ls、clangd、cmake、gopls - LSP 常用快捷键(在文件缓冲区内):
- 跳转到定义:
gd;声明:gD;引用:gr;悬浮文档:gk
- 跳转到定义:
- nvim-cmp 补全键位:
- 确认:
<CR>;下/上项:<Tab>/<S-Tab>;取消:<C-e>;文档滚动:<C-b>/<C-f>
- 确认:
- Autopairs 与补全联动:确认补全时自动补括号
相关配置:lua/plugins/lsp.lua、lua/plugins/cmp.lua、lua/plugins/autopairs.lua。
- 构建目录:默认在项目根下的
build/(见lua/plugins/cmake.lua) - 已启用生成
compile_commands.json(配置项CMAKE_EXPORT_COMPILE_COMMANDS=ON),并自动在项目根创建软链(vim.g.cmake_link_compile_commands = 1) - 典型流程:
:CMakeGenerate(或<leader>g):CMakeBuild(或<leader>b)- 运行(
<leader>rn自动选择目标,或<leader>rr一键 G+B+R;若首次使用,<leader>rr会自动执行一次外部 cmake 生成)
默认运行目标:
- 可设置
vim.g.cmake_default_run_target = "你的可执行目标名"固定运行目标; - 如未设置且只存在一个可执行目标,自动使用该目标;
- 如存在多个目标且未设置默认,自动使用第一个并给出提示。
工程根识别:
- 已将
vim.g.cmake_root_markers设置为{ '.git', 'CMakeLists.txt' },无 Git 仓库时也能识别根目录; - 一键构建在找不到插件提供的路径时,会从当前目录向上查找
CMakeLists.txt作为回退。
本配置内置 nvim-dap 与 codelldb 适配器示例(见 lua/plugins/debug.lua)。请根据你的本地路径调整:
- 适配器路径:
executable.command指向codelldb二进制 - 启动程序:
configurations.cpp[1].program指向你的可执行文件
建议做法:
- 使用 Mason 安装
codelldb(Mason中搜索 codelldb),并将debug.lua中的路径改为 Mason 安装位置 - 或者自行下载
codelldb并修改为实际路径
clangd启动参数里已包含--query-driver=/usr/bin/clangd,若编译器路径不同请修改(lua/plugins/lsp.lua):CMakeRun的键位当前不带<CR>,按下后需回车执行(你也可以在lua/core/keymaps.lua中改为:CMakeRun<CR>)- 主题默认 Tokyonight,可根据喜好启用
onedark(已安装但未启用)
- 插件:
:PackerSync、:PackerClean - LSP/工具:
:Mason - Treesitter:
:TSUpdate - CMake:
:CMakeGenerate、:CMakeBuild、:CMakeRun、:CMakeClean
- 语法高亮:已启用 Treesitter Go 解析器(go/gomod/gowork)
- 语言服务:
gopls(已纳入 Mason 安装清单) - 自动导入与格式化:保存时自动 organize imports +
gofumpt格式化 - 使用提示:
- 打开 Go 文件后,执行
:Mason安装gopls(若未安装) - 正常写码,补全走 nvim-cmp + gopls;保存时自动整理导入、格式化
- 打开 Go 文件后,执行