一个基于 lazy.nvim 的现代化 Neovim 配置。
tokyonight默认主题,catppuccin备选主题,可用命令持久化切换treesitter高亮与缩进snacks.nvimdashboard / lazygit / notifier / zen / scratch / statuscolumnfzf-lua高性能文件、全文、buffer、符号、诊断、键位搜索nvim-tree.lua文件树toggleterm.nvim浮动终端;内置右侧 / 底部项目根终端与右侧 agent 终端面板mason+lspconfig语言服务器管理- 每个 LSP server 独立从 buffer 路径往上查找 root marker,自动适配 monorepo / 多语言项目的子目录
- 终端、lazygit、agent 启动时自动使用当前 buffer 的项目根作为 cwd,Neovim 自身的工作目录不变
conform.nvim自动格式化nvim-lint代码检查nvim-cmp+LuaSnip补全,nvim-autopairs自动补全 / 跳过配对符号cmp-cmdline/cmp-dictionary/lspkind-nvim命令行补全、字典补全与补全图标- Codex / Claude / Gemini / OpenCode 终端 agent 快捷入口
bufferline.nvim顶部标签栏- 文件树 / Diffview 文件栏走左侧固定区,agent / 右侧终端 / outline 走右侧固定区,quickfix / diagnostics / 底部终端走底部固定区,查找 picker 走主编辑区底部浮窗
- buffer 标签栏避开文件树、Git 文件栏、右侧 agent / terminal / outline 侧栏
diffview.nvimGit diff / file history / merge 视图flash.nvim快速跳转lspsaga.nvimhover / code action / rename / 定义预览 / 引用与实现查找tiny-inline-diagnostic.nvim内联诊断显示glance.nvim定义 / 引用 / 实现 / 类型定义面板命令保留vim-fugitive+advanced-git-search.nvim深度 Git 操作与历史搜索git-conflict.nvim冲突选择助手grug-far.nvim项目级搜索替换面板nvim-bqfquickfix 预览增强persisted.nvim项目 session 保存与恢复dropbar.nvim顶部 breadcrumb / 上下文导航img-clip.nvim粘贴剪贴板图片im-select.nvim自动切换输入法image.nvim终端内图片显示mini.ai文本对象增强nvim-ufo代码折叠outline.nvim符号大纲nvim-treesitter-context顶部上下文nvim-ts-autotagHTML/JSX/Vue 标签自动闭合与联动重命名nvim-surround包裹 / 修改 / 删除配对符号与标签,支持 visual 选区套括号vim-matchup增强%匹配,支持语言结构与 HTML 标签vim-sleuth自动识别项目缩进风格smartyank.nvim支持 tmux / SSH 场景下的剪贴板同步todo-comments.nvimTODO 高亮与搜索trouble.nvim诊断与列表面板vimtex+texlabLaTeX 支持- Typst 支持:
tinymistLSP、typstyle格式化、treesitter 高亮、PDF / PNG / SVG 导出快捷键 vim-visual-multi多光标编辑cmp-pandoc-referencesMarkdown / LaTeX / Typst 文献引用补全nvim-highlight-colors内联高亮颜色码(含 Tailwind)- Tailwind CSS / React 语言服务
- Markdown 渲染与浏览器预览
lualine状态栏gitsignsGit 标记- 大文件模式:超过 2 MiB 或 20000 行时跳过 Treesitter / LSP / diagnostics / format / lint / expensive folds
neovim0.12+gitcurlgcc/clang/makenode/npm/npxripgrepfdfzflazygit- LaTeX 工具链:
latexmk ImageMagickimvmpv
如果你要使用系统剪贴板,还需要安装:
- Wayland:
wl-clipboard - X11:
xclip或xsel
如果你要使用 LaTeX 预览,还需要安装一个 PDF 查看器,例如:
- Linux:
zathura
如果你已经有旧配置,建议先备份:
mv ~/.config/nvim ~/.config/nvim.bak然后把这套配置放到:
~/.config/nvim例如:
git clone <your-repo-url> ~/.config/nvim直接执行:
nvim首次启动时会自动:
- 安装
lazy.nvim - 拉取插件
- 安装部分 Mason 工具
安装完成后建议执行一次:
:Lazy sync新设备首次部署时执行:
:LanguageInstall该命令会安装原配置使用的 treesitter parser、Mason LSP、formatter 和 linter。
其中 asm treesitter parser 需要 tree-sitter CLI,:LanguageInstall 会先通过 Mason 安装 tree-sitter-cli,再安装 parser。
如只需要安装 treesitter parser,可执行:
:TSInstallConfigured该命令会安装配置中尚未安装的 treesitter parser。需要强制重装时执行:
:TSInstallConfigured!treesitter parser 需要本机具备 git、C/C++ 编译器和常用构建工具。为了避免新设备首次打开 Neovim 时因为网络或编译环境问题报错,配置默认不会在启动时自动下载 parser。
如果单独执行 :TSInstallConfigured 时遇到 tree-sitter not found,请先执行 :LanguageInstall 或 :MasonInstall tree-sitter-cli。
如果确实希望启动时自动补齐缺失 parser,可在环境变量中启用:
NVIM_TS_AUTO_INSTALL=1 nvim执行:
:Mason确认这些工具已安装。:LanguageInstall 已经会触发安装,:Mason 主要用于查看安装状态和失败日志:
- LSP:
bashlsclangddocker_compose_language_servicedockerlselmlsemmet_language_servergoplshlshtmlcsslslua_lsmatlab_lsneocmakebasedpyrightrust_analyzersqllstailwindcsstaplotexlabtinymistveriblevtslsvue_lsjsonlsyamlls - Formatter / Linter / Language tools:
tree-sitter-clibibtex-tidycheckmakeshfmtshellcheckstyluaprettierdcmakelangcmake-lintgersemihadolinteslint_delm-formatelm-reviewmiss_hitnginx-config-formattersql-formattersqlfluffstylelinttaplotex-fmttypstyleveribleruffclang-formatclang-tidygofumptgoimportsgolangci-lintfourmolu
nginx LSP 使用系统提供的 nginx-language-server,不由 Mason 安装。
Elm lint 使用外部安装的 elm-review。
C/C++ lint 使用系统提供的 clang-tidy。
Haskell LSP 的 Mason 安装依赖 ghcup;配置会自动把 ~/.ghcup/bin 加入 Neovim 的 PATH。
SQL lint 只会在项目根目录存在 .sqlfluff 时启用。
默认主题为 tokyonight。可用 :Theme 命令切换并持久化主题:
:Theme tokyonight
:Theme catppuccin:checkhealth
:Lazy
:Mason<Space>ww:保存文件<Space>wq:关闭当前窗口<Space>ws/<Space>wv:横向切分 / 纵向切分<Space>w=:均分窗口大小<A-h/j/k/l>:聚焦左 / 下 / 上 / 右窗口<A-H/J/K/L>:调整窗口大小 (左 / 下 / 上 / 右)
<Space>e/<Space>E:切换文件树 / 在树中定位当前文件<Space>ff/<Space>fg/<Space>fb:查找文件 / 全文搜索 / Buffer<Space>fR/<Space>fc/<Space>fk/<Space>fh:最近文件 / 命令 / 键位 / 帮助<Space>ft/<Space>fq:TODO 搜索 / TODO quickfix<Space>rr/<Space>rw/<Space>rf:项目替换 / 替换光标单词 / 当前文件替换<Space>rs:替换 visual 选区
<Space>ca/<Space>cr/<Space>cf:Code action / 重命名 / 格式化<Space>cl:手动 LintK:LSP hover (悬停信息)[d/]d:上一个 / 下一个诊断[r/]r:上一个 / 下一个引用<Space>fd/<Space>fr/<Space>fi/<Space>fy:定义预览 / 引用查找 / 实现查找 / 类型定义预览<Space>fs/<Space>fS:当前文件符号 / 工作区符号<Space>fo/<Space>fl:符号大纲 / 符号列表<Space>xl/<Space>xy/<Space>xY:行诊断 / 复制行诊断 / 复制 Buffer 诊断<Space>xq/<Space>xt:诊断 quickfix / 切换内联诊断<Space>jb/<Space>jB:面包屑导航 (Dropbar)<Space>jc:切换代码上下文 (TSContext)
<Space>ac/<Space>ax/<Space>ag/<Space>ao:Claude / Codex / Gemini / OpenCode agent<Space>ay:复制 agent 读取 quickfix 的提示词
<Space>gg:打开 lazygit<Space>ga/<Space>gB:Git 高级搜索 / 浏览器打开位置<Space>gd/<Space>gm/<Space>gh:Diffview / Merge 视图 / 文件历史<Space>gq:搜索冲突并写入 quickfix[h/]h:上一个 / 下一个 Git hunk[x/]x:上一个 / 下一个冲突<Space>gcc/<Space>gci/<Space>gcb:冲突处理 (Current / Incoming / Both)
<Space>mi:插入剪贴板图片<Space>mI:显示 LaTeX 信息<Space>mc/<Space>mv/<Space>mt:LaTeX 编译 / 预览 / TOC<Space>mm:预览 Markdown<Space>mb:补全文献引用<Space>z/<Space>S:Zen 模式 / 草稿<Space>lq/<Space>lt:Quickfix 窗口 / Trouble quickfix<Space>ll/<Space>ls:Location list / 草稿列表<Space>lw/<Space>ly:写出 / 复制 quickfix<Space>ln/<Space>lc:通知历史 / 清除通知<Space>v:系统应用预览文件<Space>L:打开 Lazy UIgx:打开光标下 URL 或本地文件链接
<S-h>/<S-l>:上一个 / 下一个 Buffer<A-q>/<Space>bd:关闭当前 Buffer<Esc><Esc>:退出终端模式zR/zM:打开 / 关闭所有折叠
- 已启用
vimtex和texlab - 默认使用
latexmk编译,zathura预览 PDF
- 已启用
tinymist、typstyle和 treesitter parser <leader>mc:导出 PDF<leader>mv:打开 PDF,若不存在则先导出<leader>mP/<leader>mS:导出 PNG / SVG<leader>mm/<leader>mI:pin main / 查看 Tinymist 信息
- 已启用
render-markdown.nvim内联渲染 - Markdown / LaTeX / Typst 文献补全依赖 Pandoc / Quarto 里的
bibliography:元数据
- 已启用
image.nvim终端图片显示 - 已启用
img-clip.nvim粘贴图片