一个基于 Lua 的现代化 Neovim 配置,使用 lazy.nvim 作为插件管理器。
本配置为独立 Git 仓库,可直接克隆使用。支持 macOS、Linux、Windows 及 WSL。
将本仓库克隆到 Neovim 配置目录后执行安装脚本,例如:
git clone <本仓库地址> ~/.config/nvim
cd ~/.config/nvim
./install.shcd ~/.config/nvim
git pull
./install.sh- 故障排查:见 trouble_shoot.md(如 Windows 下 %APPDATA% 目录、install.sh 与 Mason 相关说明)。
- LSP 查看与管理:见 docs/lsp_view_and_manage.md。
~/.config/nvim/ (或 $XDG_CONFIG_HOME/nvim/)
├── .gitignore # Git 忽略文件
├── README.md # 项目说明文档
├── trouble_shoot.md # 故障排查记录(%APPDATA%、Mason 等)
├── install.sh # 安装脚本(包含健康检查修复功能)
├── init.lua # Neovim 主配置入口
├── docs/ # 说明文档
│ └── lsp_view_and_manage.md # LSP 查看与管理
├── scripts/ # 辅助脚本
│ └── bash.cmd # Windows 下 Git Bash 入口(可选)
├── lua/ # Lua 配置文件目录
│ ├── basic.lua # 基础设置配置
│ ├── config/ # 配置模块
│ │ └── lazy.lua # lazy.nvim 插件管理器配置
│ ├── keybindings.lua # 按键绑定配置
│ ├── window_control.lua # 智能窗口控制模块
│ └── plugins/ # 插件配置目录
│ ├── code_ai_opencode.lua # AI 补全 (opencode)
│ ├── code_completion_nvim-autopairs.lua # 自动括号配对
│ ├── code_completion_nvim-cmp.lua # 代码补全
│ ├── code_format_conform.lua # 代码格式化
│ ├── code_git_decorations_gitsigns.lua # Git 装饰
│ ├── code_highlight_nvim-treesitter.lua # 语法高亮
│ ├── code_snip_LuaSnip.lua # 代码片段
│ ├── colorscheme_catppuccin.lua # 主题配色
│ ├── comment.lua # 代码注释
│ ├── dap_lua_one-small-step-for-vimkind.lua # Lua 调试适配器
│ ├── dap_nvim-dap.lua # 调试适配器协议
│ ├── finder_telescope.lua # 模糊查找
│ ├── greeter_dashboard_mini-starter.lua # 启动页面
│ ├── help_document_lazydev.lua # Neovim 开发帮助
│ ├── indent_guides_indent-blankline.lua # 缩进指示线
│ ├── keytips_which-key.lua # 按键提示
│ ├── lsp_server_manager_mason-lspconfig.lua # LSP 服务器配置
│ ├── lsp_server_manager_mason.lua # LSP 服务器管理
│ ├── lsp_server_nvim-lspconfig.lua # LSP 配置
│ ├── practice_hardtime.lua # 刻意练习(按键约束)
│ ├── practice_typr.lua # 打字练习
│ ├── search_and_replace_nvim-spectre.lua # 搜索替换
│ ├── session_manager_persistence.lua # 会话持久化
│ ├── task_runner_overseer.lua # 任务运行器
│ ├── terminal_toggleterm.lua # 终端
│ ├── ui_buffer_tabpage_bufferline.lua # 缓冲区标签页
│ ├── ui_component_lib_nui.lua # UI 组件库
│ ├── ui_dressing.lua # UI 界面美化
│ ├── ui_file_explorer_neo-tree.lua # 文件浏览器
│ ├── ui_icons_mini.lua # 图标 (mini)
│ ├── ui_icons_nvim-web-devicons.lua # 文件图标
│ ├── ui_notice.lua # 通知系统
│ ├── ui_notification_manager_nvim-notify.lua # 通知管理
│ ├── ui_outline.lua # 代码大纲
│ ├── ui_smear_cursor.lua # 光标拖尾
│ ├── ui_snacks.lua # 轻量提示
│ └── ui_status_line_lualine.lua # 状态栏
├── scripts/ # 脚本(install 用 common.sh;Windows 下 bash.cmd 可启动 Git Bash,路径需自行修改)
└── test_dir/ # 测试目录(install.sh 部署时排除)
├── c_test.c
├── file_control_test.txt
├── json_test.json
└── lua_test.lua
以下是 Neovim 配置的启动流程图,展示了各个模块的加载顺序和依赖关系:
flowchart TD
A["启动 Neovim"] --> B["加载 init.lua"]
B --> C["require('basic')"]
B --> D["require('keybindings')"]
B --> D1["require('window_control')"]
B --> E["require('config.lazy')"]
C --> C1["设置编码 UTF-8"]
C --> C2["配置行号显示"]
C --> C3["设置缩进和Tab"]
C --> C4["配置搜索选项"]
C --> C5["设置界面选项"]
D --> D1["设置 Leader 键"]
D --> D2["基础按键映射"]
D --> D3["光标移动重映射"]
D --> D4["窗口管理快捷键"]
D --> D5["插件快捷键预设"]
D1 --> D1_1["智能窗口控制"]
D1_1 --> D1_2["窗口类型识别"]
D1_2 --> D1_3["智能调整策略"]
E --> E1["检查 lazy.nvim 安装"]
E1 --> E2{"lazy.nvim 存在?"}
E2 -->|否| E3["克隆 lazy.nvim"]
E2 -->|是| E4["设置 runtimepath"]
E3 --> E4
E4 --> E5["设置 mapleader"]
E5 --> E6["调用 lazy.setup()"]
E6 --> F["扫描 plugins/ 目录"]
F --> G["加载插件配置"]
G --> H1["优先级插件"]
G --> H2["依赖插件"]
G --> H3["懒加载插件"]
H1 --> I1["catppuccin 主题<br/>(priority=1000)"]
I1 --> I2["应用配色方案"]
H2 --> J1["mason.nvim<br/>(LSP 管理器)"]
J1 --> J2["mason-lspconfig.nvim<br/>(LSP 配置桥接)"]
J2 --> J3["nvim-lspconfig<br/>(LSP 客户端)"]
J3 --> J4["配置语言服务器"]
H2 --> K1["nvim-treesitter<br/>(语法高亮)"]
K1 --> K2["安装语言解析器"]
H2 --> L1["nvim-cmp<br/>(代码补全)"]
L1 --> L2["LuaSnip<br/>(代码片段)"]
L1 --> L3["cmp-nvim-lsp<br/>(LSP 补全源)"]
H3 --> M1["telescope.nvim<br/>(cmd: Telescope)"]
H3 --> M2["neo-tree<br/>(按键触发)"]
H3 --> M3["which-key.nvim<br/>(VeryLazy)"]
H3 --> M4["其他 UI 插件"]
I2 --> N["配置完成"]
J4 --> N
K2 --> N
L3 --> N
M1 --> N
M2 --> N
M3 --> N
M4 --> N
N --> O["Neovim 就绪"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
style D fill:#fff3e0
style E fill:#fce4ec
style O fill:#e0f2f1
-
初始化阶段: 加载核心配置文件
init.lua作为入口点- 按顺序加载基础设置、按键绑定和插件管理器
-
基础配置阶段: 设置 Neovim 基本行为
- 编码和界面设置
- 编辑器行为配置
- 搜索和导航选项
-
按键绑定阶段: 配置快捷键
- 设置 Leader 键
- 重映射基础操作
- 预设插件快捷键
-
插件管理器初始化: 准备插件环境
- 检查并安装 lazy.nvim
- 设置插件加载路径
- 扫描插件配置
-
插件加载阶段: 按优先级和依赖关系加载
- 优先级插件: 主题等需要早期加载的插件
- 依赖插件: LSP、语法高亮、代码补全等核心功能
- 懒加载插件: 按需加载的 UI 和工具插件
-
完成阶段: 所有配置就绪,Neovim 可以正常使用
- init.lua: Neovim 配置入口文件,加载基础设置、按键绑定和插件管理器
- lua/basic.lua: 基础编辑器设置,包括编码、行号、缩进、搜索等配置
- lua/keybindings.lua: 自定义按键绑定,包括光标移动、窗口管理、文件操作等
- lua/window_control.lua: 智能窗口控制模块,提供窗口类型识别和智能调整策略
- lua/config/lazy.lua: lazy.nvim 插件管理器的配置和初始化
功能: 智能代码补全系统,支持多种补全源 快捷键:
Tab- 选择下一个补全项或展开代码片段Shift+Tab- 选择上一个补全项Ctrl+Space- 手动触发补全Enter- 确认选择Ctrl+e- 关闭补全菜单
功能: 自动括号、引号配对,智能处理各种配对字符 特性: 自动在输入左括号时添加右括号,支持多种文件类型的智能配对
功能: 代码片段引擎,提供快速代码模板插入 快捷键: 与 nvim-cmp 集成,通过 Tab 键展开和跳转
功能: 智能代码注释插件,支持多种注释格式 快捷键:
gcc- 切换当前行注释gbc- 切换当前行块注释gc+ 动作 - 注释指定范围(如gcap注释段落)gb+ 动作 - 块注释指定范围gcO- 在上方添加注释gco- 在下方添加注释gcA- 在行尾添加注释
功能: 基于 Tree-sitter 的语法高亮和代码解析 快捷键:
Ctrl+Space- 初始化选择Ctrl+Space- 扩展选择到下一个节点Backspace- 缩小选择范围 特性: 支持增量选择、智能缩进、语法感知的文本对象 诊断命令::TSCheckCompiler和:TSViewLogs可用
功能: 集成 opencode AI 助手到 Neovim,提供编辑器感知的研究、审查和请求功能 特性:
- 自动连接到 CWD 中运行的 opencode 实例
- 共享编辑器上下文(缓冲区、光标、选择、诊断等)
- 支持输入提示、补全和高亮
- 从提示库中选择提示或定义自定义提示
- 执行命令和响应权限请求
- 实时重载编辑后的缓冲区
- 通过状态栏组件监控状态
- 支持范围和点重复(Vim 风格)
主要功能快捷键:
<leader>aia- 询问 opencode(当前选择或光标位置)<leader>ais- 选择 opencode 操作(提示、命令等)<leader>ait- 切换 opencode 窗口显示/隐藏
操作符模式(支持范围和点重复):
go- 添加范围到 opencode(作为操作符使用,如goap添加段落)goo- 添加当前行到 opencode
会话控制:
<leader>aiu- 向上滚动 opencode 会话(半页)<leader>aid- 向下滚动 opencode 会话(半页)<leader>aii- 中断 opencode 会话
窗口导航:
<leader>aie- 从 opencode 窗口返回主编辑窗口(不隐藏 opencode 窗口,仅切换焦点)<leader>j/<leader>l- 在窗口间移动(左侧/右侧)
上下文占位符: opencode.nvim 支持以下上下文占位符,可在提示中使用:
@this- 操作符范围或视觉选择(如果有),否则为光标位置@buffer- 当前缓冲区@buffers- 打开的缓冲区@visible- 可见文本@diagnostics- 当前缓冲区诊断@quickfix- Quickfix 列表@diff- Git diff@marks- 全局标记@grapple- grapple.nvim 标签
内置提示:
diagnostics- 解释诊断信息diff- 审查 Git diffdocument- 为代码添加注释explain- 解释代码及其上下文fix- 修复诊断问题implement- 实现代码optimize- 优化代码性能和可读性review- 审查代码正确性和可读性test- 为代码添加测试
配置说明:
- 使用
snacksprovider 作为默认提供者(更稳定) - 自动检测 CWD 中已运行的 opencode 实例
- 如果找不到已存在的实例,会自动启动新的实例
- 支持自动重载编辑后的文件(需要
autoread选项)
状态栏集成: opencode 状态显示在 lualine 状态栏的右侧,显示当前 opencode 会话状态。
更多信息: opencode.nvim GitHub
功能: LSP 客户端配置,提供语言服务器支持 快捷键: 通过 LSP 提供的功能(定义跳转、引用查找等) 支持语言: Lua, Python, Rust, TypeScript, JavaScript, JSON, YAML 等
功能: LSP 服务器包管理器,便携式工具安装 快捷键:
<leader>cm- 打开 Mason 包管理器<leader>cM- 更新 Mason 注册表 Mason UI 快捷键:i- 安装包u- 更新包X- 卸载包Enter- 展开包详情
功能: Mason 和 LSP 配置的桥接,自动安装和配置 LSP 服务器
功能: Neovim Lua API 开发支持,提供完整的类型定义和补全 特性: 替代 neodev.nvim,支持 Neovim >= 0.10
功能: 使用 Neovim 作为语言服务器,注入 LSP 诊断和代码格式化 支持工具: stylua (Lua 格式化), black (Python 格式化)
功能: 调试适配器协议支持,提供完整的调试功能 快捷键: 通过调试适配器提供断点、单步执行等功能
功能: Lua 脚本调试,专门用于调试 Neovim 插件 快捷键:
<leader>daL- 启动 Lua 调试服务器<leader>dal- 调试当前 Lua 文件
功能: 现代化状态栏,显示模式、分支、诊断等信息 显示内容: 编辑模式、Git 分支、文件差异、LSP 诊断、文件信息、光标位置
功能: 缓冲区标签页,提供类似现代编辑器的标签体验 快捷键:
<leader>[/[b- 上一个缓冲区<leader>]/]b- 下一个缓冲区<leader>bp- 固定缓冲区<leader>bP- 删除非固定缓冲区<leader>bo- 删除其他缓冲区<leader>br- 删除右侧缓冲区<leader>bl- 删除左侧缓冲区<leader>b- 关闭当前缓冲区- 鼠标右键点击 - 关闭对应的缓冲区
- 点击关闭图标 - 关闭对应的缓冲区(如果显示)
功能: 现代化文件浏览器,支持文件系统、缓冲区、Git 状态浏览 快捷键:
<leader>fe/<leader>e- 文件浏览器(根目录)<leader>fE/<leader>E- 文件浏览器(当前文件目录)<leader>be- 缓冲区浏览器<leader>ge- Git 状态浏览器
功能: 文件类型图标,为文件和目录提供美观的图标显示 特性: 支持多种文件类型的图标识别
功能: 改进默认 UI 界面,提供更美观的选择和输入界面 特性: 美化 vim.ui.select 和 vim.ui.input 界面
功能: 消息、命令行和弹出菜单的现代化替换 特性: 完全替换 Neovim 的默认 UI 组件
功能: UI 组件库,为其他插件提供 UI 组件支持
功能: 代码大纲侧边栏,支持 LSP 和 Tree-sitter 符号导航 特性:
- 支持 LSP 和 Tree-sitter 符号解析
- 智能缓冲区管理,防止缓冲区冲突
- 自动更新符号列表和当前符号高亮
- 支持多种编程语言的符号解析
- 符号层次结构 UI,支持可折叠节点
- 自定义符号图标和映射
- 预览符号位置功能
- 激进缓冲区清理策略,彻底解决冲突问题
快捷键:
<leader>o- 切换代码大纲<leader>O- 强制重新打开代码大纲
大纲窗口内快捷键:
Enter- 跳转到符号位置o- 预览符号位置Ctrl+p- 切换预览窗口za- 折叠/展开节点zM- 折叠所有节点zR- 展开所有节点Space- 选择符号j/k- 上下导航gg/G- 跳转到第一个/最后一个符号/- 搜索符号R- 刷新q- 关闭?- 显示帮助
窗口配置:
- 固定宽度:30 字符
- 位置:右侧
- 支持智能窗口调整
功能: 通知管理器,提供美观的通知显示 快捷键:
<leader>un- 关闭所有通知
功能: 模糊查找器,支持文件、内容、符号等多种搜索 快捷键:
<leader>ff- 查找文件<leader>fg- 实时搜索文本<leader>fb- 缓冲区列表<leader>fh- 帮助标签<leader>fr- 最近文件<leader>fc- 命令列表<leader>fk- 键位映射<leader>fs- 搜索当前单词<leader>fd- 诊断信息<leader>ft- Treesitter 符号<leader>fz- 当前缓冲区模糊搜索<leader>rs- 恢复上次搜索
Git 相关搜索:
<leader>gf- Git 文件<leader>gc- Git 提交<leader>gb- Git 分支<leader>gs- Git 状态
LSP 相关搜索:
<leader>lr- LSP 引用<leader>ld- LSP 定义<leader>li- LSP 实现<leader>ls- 文档符号<leader>lw- 工作区符号
功能: 按键绑定提示,显示可用的快捷键组合 特性: 在按下 Leader 键后显示可用的快捷键选项
功能: 强大的搜索和替换工具,支持正则表达式和多文件操作 快捷键:
<leader>sr- 打开替换面板<leader>sw- 搜索当前单词<leader>sp- 在当前文件中搜索
功能: 自动保存和恢复编辑会话,支持多项目会话管理 特性:
- 自动保存会话:退出时自动保存当前工作环境
- 自动恢复会话:启动时自动恢复上次的工作环境
- 多项目支持:为不同项目保存独立的会话
- 文件浏览器集成:恢复会话后自动打开neo-tree文件浏览器
- 智能会话管理:避免与手动会话操作冲突
快捷键:
<leader>qs- 保存会话<leader>ql- 加载会话<leader>qL- 加载最后一个会话<leader>qd- 停止会话记录<leader>Q- 直接退出 Neovim(保存所有文件)
自动行为:
- 启动Neovim时,如果没有命令行参数,会自动恢复上次的会话
- 退出Neovim时,会自动保存当前会话
- 会话恢复后会自动打开文件浏览器,方便继续工作
- 延迟加载机制,确保会话恢复的稳定性
功能: 任务运行与管理,统一控制构建、脚本与命令输出 特性:
- 默认通过 ToggleTerm 输出,融入既有终端工作流
- 底部任务列表快速查看状态与详情
- 自定义 “Run current file” 模板,依据文件类型自动挑选解释器 快捷键:
<leader>or- 打开任务选择器(:OverseerRun)<leader>oo- 切换任务列表(:OverseerToggle)<leader>oa- 任务快速操作(:OverseerQuickAction)<leader>of- 运行当前文件模板(:OverseerRunCurrent)
功能: 美观的打字练习插件,提供打字练习界面和统计仪表板 特性:
- 美观的打字练习界面
- 实时打字统计和进度显示
- 打字历史记录和数据分析
- 支持符号、数字、随机模式切换
- 可自定义练习行数 命令:
:Typr- 启动打字练习:TyprStats- 查看打字统计 Typr 窗口内快捷键:s- 切换符号模式n- 切换数字模式r- 切换随机模式3- 设置 3 行练习(其他数字类似,如5设置 5 行) TyprStats 窗口内快捷键:D- 切换到仪表板视图H- 切换到历史记录视图K- 切换到按键统计视图 注意:- typr 缓冲区的文件类型为
typr,如需禁用代码补全,请参考补全插件的文档配置该文件类型 - Activity UI 功能仍在开发中,可能无法正常工作
功能: 帮助培养良好的 Vim 操作习惯,阻止重复按键并提供高效操作提示 特性:
- 阻止短时间内重复按键(默认 1 秒内超过 3 次)
- 提供智能提示,建议使用更高效的 Vim 操作方式
- 生成使用习惯报告,帮助识别和改进操作模式
- 针对 ikjl 键位布局进行优化配置
- 禁用方向键和鼠标,强制使用 Vim 原生操作
命令:
:Hardtime enable- 启用 Hardtime:Hardtime disable- 禁用 Hardtime:Hardtime toggle- 切换 Hardtime 状态:Hardtime report- 查看使用习惯报告
配置说明:
- 默认状态:启用
- 限制按键:
ikjl(针对当前键位布局) - 禁用按键:方向键(
<Up><Down><Left><Right>) - 限制模式:阻止重复按键(
restriction_mode = "block") - 日志文件:
~/.local/state/nvim/hardtime.nvim.log
注意:
- 本配置针对
ikjl键位布局进行了优化(i=上,k=下,j=左,l=右) - 如需临时禁用,可使用
:Hardtime disable命令 - 提示消息会显示在命令行区域,建议将
cmdheight设置为 2 或使用状态栏显示模式
Hardtime 插件推荐的 workflow 本质上是 Vim 设计的核心高效操作方式,掌握这些技巧可以显著提升编辑效率:
1. 使用相对跳转进行屏幕内垂直移动
- 传统习惯:连续按
j/k(或k/i)逐行移动,效率低且容易导致手指疲劳 - 推荐方式:使用数字前缀直接跳转指定行数,如
5k(向下跳 5 行)、12i(向上跳 12 行) - 优势:减少按键次数,精准定位目标位置,避免重复按键带来的疲劳
2. 使用 CTRL-U/CTRL-D/gg/G 进行屏幕外垂直移动
- 传统习惯:依赖
j/k(或k/i)滚动长文件,耗时且缺乏全局视野 - 推荐方式:
CTRL-D向下翻半屏,CTRL-U向上翻半屏CTRL-F向下翻一屏,CTRL-B向上翻一屏gg跳至文件开头,G跳至文件结尾
- 优势:适合长距离快速定位,提供文件全局视图,大幅减少滚动时间
3. 使用单词运动进行短距离水平移动
- 传统习惯:用
h/l(或j/l)逐字符移动,尤其在长行中效率极低 - 推荐方式:
w/W跳至下一词首(w按单词,W按空白分隔)b/B跳至上一词首e/E跳至词尾ge/gE跳至上一词尾
- 优势:按"单词"为单位移动,减少按键次数,在代码编辑中特别高效
4. 使用 f/t/0/$ 等进行中长距离水平移动
- 传统习惯:长距离仍依赖
h/l或鼠标点击 - 推荐方式:
f{char}跳至该行第一个指定字符,F{char}反向查找t{char}跳至指定字符前,T{char}反向查找;重复上次 f/t 操作,,反向重复0跳至行首,^跳至行首非空白字符,$跳至行尾
- 优势:直接定位目标字符,定位精准且高效,特别适合代码编辑中的括号、引号等符号定位
5. 优先使用"操作符 + 运动/文本对象"组合
- 传统习惯:先用光标选中内容,再执行删除/修改(如
v...d),需要多步操作 - 推荐方式:
ci{清除括号内内容并进入插入模式dap删除整个段落y5k复制向下 5 行caw修改当前单词
- 优势:直接组合操作,减少操作步骤,符合 Vim "操作 + 范围"的设计哲学,一次按键完成多步操作
6. 使用 % 和括号命令跳转括号
- 传统习惯:手动查找匹配括号,尤其在嵌套结构中容易出错
- 推荐方式:
%在成对括号间跳转(()[]{})[(跳至上一层(,])跳至下一层)[{跳至上一层{,]}跳至下一层}
- 优势:快速在匹配括号间跳转,适合代码编辑场景,特别是在处理嵌套结构时非常高效
功能: Catppuccin 主题配色,提供柔和的粉彩主题 特性: 支持透明背景、多种样式(latte、frappe、macchiato、mocha)
功能: 缩进指示线,显示代码缩进层级 特性: 支持作用域高亮、智能缩进检测
功能: Git 状态装饰,在编辑器中显示 Git 变更信息 快捷键:
]h- 下一个 Git 变更(在 diff 模式下使用]c)[h- 上一个 Git 变更(在 diff 模式下使用[c)<leader>ghs- 暂存当前 hunk<leader>ghr- 重置当前 hunk<leader>ghS- 暂存整个缓冲区<leader>ghu- 撤销暂存 hunk<leader>ghR- 重置整个缓冲区<leader>ghp- 预览 hunk<leader>ghi- 内联预览 hunk<leader>ghb- 显示当前行 blame<leader>ghtb- 切换当前行 blame 显示<leader>ghB- 显示文件 blame<leader>ghd- Diff 当前文件<leader>ghD- Diff 当前文件 (HEAD~1)<leader>ghts- 切换标识显示<leader>ghtn- 切换行号高亮<leader>ghtl- 切换行高亮<leader>ghtw- 切换单词 Diff<leader>ghtd- 切换已删除行显示<leader>ghq- 所有 Hunks 到 Quickfix<leader>ghl- 当前缓冲区 Hunks 到 Location List
功能: 启动欢迎页面,提供快速访问常用功能的入口 启动项:
f- 查找文件n- 新建文件r- 最近文件g- 文本搜索c- 配置文件s- 恢复会话S- 恢复最后一个会话l- Lazy 插件管理q- 退出
重要提示:Neovim 0.10+ 版本强化了对 XDG 目录规范的支持,优先使用 XDG 风格的路径,以实现跨平台配置路径的统一性。
当 Neovim 寻找配置文件(init.lua 或 init.vim)时,它会按以下顺序查找:
$XDG_CONFIG_HOME/nvim(如果设置了该环境变量)$HOME/.config/nvim(XDG 风格的新路径,优先使用)$HOME/AppData/Local/nvim(Windows 传统路径,仅在 XDG 路径不存在时使用)
本项目使用新路径(XDG 风格),确保在 Linux、macOS 和 Windows 上的配置路径保持一致。
在 Neovim 中,可以使用以下命令查看当前实际使用的配置路径:
:echo stdpath('config')这个命令会显示 Neovim 当前使用的配置目录路径。根据路径查找优先级,它会显示:
- 如果设置了
$XDG_CONFIG_HOME,则显示$XDG_CONFIG_HOME/nvim - 否则显示
$HOME/.config/nvim(如果存在) - 或者显示
$HOME/AppData/Local/nvim(Windows 传统路径)
查看所有相关的路径,可以使用:
:echo stdpath('data') " 数据目录
:echo stdpath('config') " 配置目录
:echo stdpath('cache') " 缓存目录其他有用的路径查询命令:
:echo stdpath('data')- 查看数据目录(插件、swap 等):echo stdpath('state')- 查看状态目录(shada、日志等):echo stdpath('cache')- 查看缓存目录:echo stdpath('config')- 查看配置目录(配置文件所在位置)
| 内容 | 旧路径 (AppData) | 新路径 (XDG 风格) | 说明 |
|---|---|---|---|
| 配置文件 | %LOCALAPPDATA%\nvimC:\Users\<用户名>\AppData\Local\nvim |
$XDG_CONFIG_HOME/nvimC:\Users\<用户名>\.config\nvim |
init.lua / init.vim 所在目录 |
| 数据文件 | %LOCALAPPDATA%\nvim-dataC:\Users\<用户名>\AppData\Local\nvim-data |
$XDG_DATA_HOME/nvimC:\Users\<用户名>\.local\share\nvim |
插件、swap、shada 等 |
| 平台 | 配置目录 | 数据目录 | 备注 |
|---|---|---|---|
| *Linux / BSD / WSL | $HOME/.config/nvim |
$HOME/.local/share/nvim |
遵循 XDG 规范 |
| macOS | $HOME/.config/nvim |
$HOME/.local/share/nvim |
遵循 XDG 规范 |
| Windows | $HOME/.config/nvim(需设置 XDG_CONFIG_HOME) |
$HOME/.local/share/nvim(需设置 XDG_DATA_HOME) |
推荐使用 XDG 风格路径 |
| Windows (传统) | %LOCALAPPDATA%\nvim |
%LOCALAPPDATA%\nvim-data |
仅在 XDG 路径不存在时使用 |
- Neovim 0.11.0+(本配置使用
vim.lsp.config、nvim-notify 等 0.11 API;需 LuaJIT 支持) - Git >= 2.19.0
- Nerd Font 字体(可选,用于图标显示)
- C 编译器(用于 nvim-treesitter)
安装脚本依赖:需要 uv(Python 环境)和 fnm(Node.js 环境)。若未安装:macOS brew install uv fnm;Linux/WSL 见 uv 安装、fnm 安装。WSL 下与 Linux 相同,使用 $HOME/.config/nvim,无需额外配置。
配套工具与版本(由 install.sh 协助安装):uv(pynvim;升级 Neovim 后建议 uv pip install -U pynvim)、Node.js/fnm(LSP、mason)、tree-sitter-cli 建议 >= 0.26.1;系统 Lua 可选。运行前可用 command -v uv、command -v fnm 确认;未安装时脚本报错并退出。
brew install neovimsudo pacman -S neovimsudo apt-get install neovim下载安装包:https://github.com/neovim/neovim/releases
推荐/测试环境:Windows 10 + Git Bash;安装脚本在该环境下会规范化 HOME 并统一使用 $HOME/.config/nvim。
使用安装脚本自动检测系统并安装对应配置(包含自动备份):
cd ~/.config/nvim
chmod +x install.sh
./install.sh(若尚未克隆,先执行 git clone <本仓库地址> ~/.config/nvim 再进入目录。)
安装脚本会自动:
- 检查配置完整性(init.lua / lua/)
- 检测操作系统(macOS/Linux/Windows/WSL)
- 备份现有配置文件(如果存在)
- 复制配置文件到 XDG 风格的路径:
- Linux/macOS/WSL:
~/.config/nvim/ - Windows:
%XDG_CONFIG_HOME%/nvim/或~/.config/nvim/(如果设置了 XDG_CONFIG_HOME)
- Linux/macOS/WSL:
- Windows 上检查并提示配置 XDG_CONFIG_HOME 环境变量
# 如需备份现有配置
mv ~/.config/nvim{,.bak} 2>/dev/null || true
mv ~/.local/share/nvim{,.bak} 2>/dev/null || true
mv ~/.local/state/nvim{,.bak} 2>/dev/null || true
mv ~/.cache/nvim{,.bak} 2>/dev/null || true
# 克隆本仓库到配置目录并执行安装
git clone <本仓库地址> ~/.config/nvim
cd ~/.config/nvim
./install.shnvim首次启动时,lazy.nvim 会自动安装所有插件。
配置支持自动会话管理,提供以下功能:
-
自动恢复会话:
# 直接启动,会自动恢复上次的会话 nvim -
手动恢复会话:
- 启动页面中按
s恢复会话 - 启动页面中按
S恢复最后一个会话 - 使用快捷键
<leader>ql或<leader>qL
- 启动页面中按
-
指定文件启动:
# 指定文件或目录启动,不会自动恢复会话 nvim some_file.txt nvim /path/to/project -
会话管理:
<leader>qs- 手动保存当前会话<leader>qd- 停止自动会话记录
<Space>- Leader 键S- 保存文件Q- 退出:e!- 强制(!)重新编辑(e)当前文件,直接覆盖 Neovim 缓冲区里的旧内容,加载外部修改后的最新版本<leader>Q- 直接退出Neovim(保存所有文件)R- 重载配置<leader>rc- 打开配置文件
i- 向上移动 (替代 k)k- 向下移动 (替代 j)j- 向左移动 (替代 h)l- 向右移动 (保持不变)I- 向上移动5行K- 向下移动5行J- 移动到行首L- 移动到行尾<C-u>- 向上滚动半页<C-d>- 向下滚动半页
h- 进入插入模式 (替代 i)H- 在行首插入 (替代 I)
u- 撤销 (Undo)<C-r>- 重做 (Redo)
si- 向上分屏sk- 向下分屏sj- 向左分屏sl- 向右分屏<leader>i/k/j/l- 在窗口间移动<leader>q- 关闭当前窗口<leader>b- 关闭当前 buffer
<C-Up>/<C-Down>- 调整窗口高度(步长:3行)<C-Left>/<C-Right>- 调整窗口宽度(步长:3字符)<leader>wn- 设置窗口为窄模式<leader>wN- 设置窗口为正常模式<leader>ww- 设置窗口为宽模式<leader>wb- 平衡所有窗口大小<leader>wm- 最大化当前窗口<leader>wr- 恢复窗口布局
智能特性:
- 插件窗口(outline、neo-tree)有合理的宽度限制
- 大纲窗口:最小30字符,最大35%屏幕宽度,步长限制为-2到2字符
- 文件树窗口:最小35字符,最大45%屏幕宽度,步长限制为-2到2字符
- 智能调整:在主窗口时,Ctrl+←/→会调整相邻的插件窗口而不是主窗口
- 动态范围:根据屏幕宽度自动调整最大宽度限制
- 调试功能:
<leader>wd显示当前窗口信息和相邻插件窗口 - 缓冲区管理:自动清理outline插件的残留缓冲区
<leader>fe/<leader>e- 切换文件浏览器(根目录)<leader>fE/<leader>E- 切换文件浏览器(当前文件目录)<leader>be- 缓冲区浏览器<leader>ge- Git状态浏览器<leader>o- 切换代码大纲<leader>O- 打开代码大纲<C-j>/<C-l>- 切换 buffer 标签<leader>/- 打开终端
| 快捷键 | 功能 |
|---|---|
<leader>/ |
在下方分割窗口并打开终端 |
<C-N> |
退出终端模式(在终端模式下) |
<C-O> |
关闭终端(在终端模式下) |
Ctrl + d |
关闭终端 |
| 快捷键 | 模式 | 功能 |
|---|---|---|
<leader>/ |
普通模式 | 切换终端(开启时聚焦到终端,关闭时回到之前窗口) |
<leader>/ |
插入模式 | 切换终端(先退出插入模式再切换终端) |
<leader>/ |
终端模式 | 关闭终端并回到之前窗口 |
<Ctrl->` |
普通模式 | 切换终端(备用快捷键) |
| 快捷键 | 功能 |
|---|---|
<leader>tf |
浮动终端 |
<leader>th |
水平终端 |
<leader>tv |
垂直终端(宽度80列) |
<leader>ta |
切换所有终端 |
| 快捷键 | 功能 |
|---|---|
<leader>tg |
Lazygit(浮动窗口) |
<leader>tn |
Node REPL(水平分割) |
<leader>tp |
Python REPL(水平分割) |
<leader>tr |
Htop 系统监控(浮动窗口) |
| 快捷键 | 模式 | 功能 |
|---|---|---|
<leader>ts |
普通模式 | 发送当前行到终端 |
<leader>ts |
可视模式 | 发送选中内容到终端 |
| 快捷键 | 功能 |
|---|---|
<leader>/ |
关闭终端并回到之前窗口 |
<Esc> 或 jk |
退出终端模式但不关闭终端 |
<C-h> |
移动到左侧窗口 |
<C-j> |
移动到下方窗口 |
<C-k> |
移动到上方窗口 |
<C-l> |
移动到右侧窗口 |
<C-w> |
窗口操作前缀(先退出终端模式) |
工作流程建议:
- 开启终端:在普通模式或插入模式下按
<leader>/开启终端 - 执行命令:在终端中执行所需命令
- 退出终端模式:按
<Esc>或jk退出终端模式但保持终端开启 - 编辑文件:使用窗口导航快捷键(
<C-h/j/k/l>)切换到编辑窗口 - 关闭终端:在任何模式下按
<leader>/关闭终端并回到之前窗口
在终端中分割新终端:
在终端中分割新终端(上下分、左右分)的操作流程:
在终端模式下操作
- 在终端中按
<Esc>或jk退出终端模式(终端保持打开) - 使用窗口分割快捷键:
sk- 向下分屏(在下方创建新窗口)si- 向上分屏(在上方创建新窗口)sl- 向右分屏(在右侧创建新窗口)sj- 向左分屏(在左侧创建新窗口)
- 在新窗口中按
<leader>/打开新终端
实际操作示例:
场景:在终端中上下分割新终端
- 打开第一个终端:按
<leader>/ - 退出终端模式:按
<Esc> - 向下分割:按
sk - 在新窗口打开终端:按
<leader>/
场景:在终端中左右分割新终端
- 打开第一个终端:按
<leader>/ - 退出终端模式:按
<Esc> - 向右分割:按
sl - 在新窗口打开终端:按
<leader>/
特殊功能:
- 浮动终端:适合临时命令执行,不占用编辑空间
- 水平/垂直终端:适合需要同时查看代码和终端输出的场景
- 预定义终端:快速启动常用工具(Git、REPL、系统监控等)
- 代码发送:直接将代码发送到终端执行,适合交互式开发
<leader>fe- 打开文件浏览器(根目录)<leader>fE- 打开文件浏览器(当前文件所在目录)<leader>e- 文件浏览器(根目录)的别名<leader>E- 文件浏览器(当前文件)的别名
<leader>be- 打开缓冲区浏览器<leader>ge- 打开 Git 状态浏览器
<space>- 展开/折叠节点<2-LeftMouse>- 双击打开文件<cr>(回车) - 打开文件<esc>- 取消操作q- 关闭 Neo-tree 窗口
P- 切换预览(浮动窗口)l- 聚焦到预览窗口
S- 水平分屏打开s- 垂直分屏打开t- 新标签页打开w- 使用窗口选择器打开
C- 关闭节点z- 关闭所有节点Z- 展开所有节点
a- 添加文件A- 添加文件夹d- 删除文件/文件夹r- 重命名c- 复制m- 移动
y- 复制到系统剪贴板x- 剪切到系统剪贴板p- 从系统剪贴板粘贴
<- 切换到上一个数据源>- 切换到下一个数据源R- 刷新?- 显示帮助gd- 显示文件详细信息
当使用 <leader>ge 打开 Git 状态浏览器时,额外可用:
A- Git 添加所有文件gu- Git 取消暂存文件ga- Git 添加文件到暂存区gr- Git 恢复文件gc- Git 提交gp- Git 推送gg- Git 提交并推送
- 日常文件浏览:使用
<leader>e快速打开文件浏览器 - 当前文件目录:使用
<leader>E在当前文件所在目录打开 - 缓冲区管理:使用
<leader>be查看和切换已打开的缓冲区 - Git 工作流:使用
<leader>ge进行 Git 状态管理 - 快速预览:使用
P预览文件内容而不打开
当前缓冲区模糊搜索:
<leader>fz- 在当前打开的文件中进行模糊搜索
搜索当前光标下的单词:
<leader>fs- 搜索当前光标所在位置的单词
实时全局搜索(推荐):
<leader>fg- 在整个项目中实时搜索文本内容
查找文件:
<leader>ff- 按文件名搜索并打开文件
Git 文件搜索:
<leader>gf- 在 Git 跟踪的文件中搜索
<leader>fr- 搜索最近打开的文件<leader>fb- 搜索当前打开的缓冲区<leader>fh- 搜索帮助文档<leader>fc- 搜索可用命令<leader>fk- 搜索键位映射<leader>rs- 恢复上次搜索
在 Telescope 搜索界面中:
Ctrl + i- 上移动选择Ctrl + k- 下移动选择↑/↓- 上下移动选择Enter- 打开选中的文件Ctrl + x- 在水平分屏中打开Ctrl + v- 在垂直分屏中打开Ctrl + t- 在新标签页中打开Esc- 退出搜索
最常用的搜索快捷键:
<leader>fz- 当前文件搜索<leader>fg- 全局文本搜索<leader>ff- 文件名搜索
n/N- 下一个/上一个搜索结果<leader><CR>- 取消搜索高亮*/#- 搜索当前单词 (向前/向后)
<leader>qs- 保存当前会话<leader>ql- 加载会话<leader>qL- 加载最后一个会话<leader>qd- 停止会话记录<leader>Q- 直接退出 Neovim(保存所有文件)
<leader>or- 运行 Overseer 任务<leader>oo- 打开/关闭任务列表<leader>oa- Overseer 快速操作<leader>of- 运行当前文件 Overseer 模板
<leader>o- 折叠/展开代码<leader>sc- 切换字符大小写<Tab>- 增加缩进 (可视模式)<S-Tab>- 减少缩进 (可视模式)</>- 减少/增加缩进并保持选择
<leader>aia- 询问 opencode(当前选择或光标位置)<leader>ais- 选择 opencode 操作(提示、命令等)<leader>ait- 切换 opencode 窗口显示/隐藏
go- 添加范围到 opencode(作为操作符使用,如goap添加段落)goo- 添加当前行到 opencode
<leader>aiu- 向上滚动 opencode 会话(半页)<leader>aid- 向下滚动 opencode 会话(半页)<leader>aii- 中断 opencode 会话
<leader>aie- 从 opencode 窗口返回主编辑窗口(不隐藏 opencode 窗口,仅切换焦点)<leader>j/<leader>l- 在窗口间移动(左侧/右侧)
- 快速询问:选中代码后按
<leader>aia直接询问 - 操作符模式:使用
go作为操作符,支持 Vim 的点和重复功能 - 上下文占位符:在提示中使用
@this、@buffer、@diagnostics等占位符 - 窗口切换:在 opencode 窗口中按
<leader>aie快速返回编辑窗口,opencode 窗口保持可见
gD- 跳转到声明gd- 跳转到定义gr- 查找引用gI- 跳转到实现gy- 跳转到类型定义
D- 悬停文档gK- 签名帮助<C-k>- 签名帮助 (插入模式)
<leader>cr- 重命名<leader>ca- 代码操作<leader>cf- 格式化代码
<leader>cd- 行诊断]d- 下一个诊断[d- 上一个诊断<leader>cq- 诊断列表
<leader>wa- 添加工作区文件夹<leader>wr- 移除工作区文件夹<leader>wl- 列出工作区文件夹
<leader>y- 复制到系统剪贴板<leader>p- 从系统剪贴板粘贴<leader>P- 在上方粘贴
<leader>d- 删除不进入寄存器<leader>c- 修改不进入寄存器<leader>x- 剪切不进入寄存器
在本仓库目录拉取最新代码后重新运行安装脚本:
cd ~/.config/nvim
git pull
./install.sh在 Windows 上使用 Neovim 时,强烈推荐配置 XDG 环境变量,以便使用与 Linux/macOS 一致的配置路径。
- 统一性:在 Linux、macOS 和 Windows 上使用相同的配置路径结构
- 优先级:Neovim 0.10+ 优先检查
$HOME/.config/nvim,如果存在则忽略旧路径 - 现代化:遵循 XDG 目录规范,符合现代工具的标准做法
-
打开系统属性:
- 右键单击"此电脑"或"计算机"图标,选择"属性"
- 在左侧菜单中,点击"高级系统设置"
-
打开环境变量设置:
- 在"系统属性"窗口中,点击"环境变量"按钮
-
添加新环境变量:
- 在"用户变量"部分点击"新建"按钮
-
输入变量名和变量值:
- 变量名:
XDG_CONFIG_HOME - 变量值:
C:\Users\<用户名>\.config\例如:C:\Users\Administrator\.config\ - 点击"确定"保存
- 变量名:
按照相同步骤添加:
- 变量名:
XDG_DATA_HOME - 变量值:
C:\Users\<用户名>\.local\share\例如:C:\Users\Administrator\.local\share\
- 关闭所有窗口,确保更改已保存
- 重新启动终端:关闭并重新打开 Git Bash 或 PowerShell,以使新环境变量生效
在 Git Bash 中运行:
echo $XDG_CONFIG_HOME
echo $XDG_DATA_HOME应该输出:
C:\Users\<用户名>\.config\C:\Users\<用户名>\.local\share\
启动 Neovim 后,可以使用以下命令查看 Neovim 实际使用的配置路径:
:echo stdpath('config')这个命令会显示 Neovim 当前实际使用的配置目录。如果配置正确,应该显示:
C:\Users\<用户名>\.config\nvim(如果设置了XDG_CONFIG_HOME)- 或者
C:\Users\<用户名>\.config\nvim(如果$HOME/.config/nvim目录存在)
其他有用的路径查询命令:
:echo stdpath('data') " 查看数据目录(插件、swap 等)
:echo stdpath('state') " 查看状态目录(shada、日志等)
:echo stdpath('cache') " 查看缓存目录配置完成后,Neovim 的路径将是:
- 配置文件:
%XDG_CONFIG_HOME%\nvim\(即~/.config/nvim/) - 数据文件:
%XDG_DATA_HOME%\nvim\(即~/.local/share/nvim/)
验证方法:在 Neovim 中运行 :echo stdpath('config') 和 :echo stdpath('data') 来确认实际使用的路径。
- 如果
$HOME/.config/nvim目录存在,Neovim 0.10+ 会优先使用它,忽略旧的AppData\Local\nvim路径 - 如果未设置
XDG_CONFIG_HOME,Neovim 仍会尝试使用$HOME/.config/nvim(如果存在) - 建议同时设置
XDG_CONFIG_HOME和XDG_DATA_HOME以获得完整的 XDG 支持
若提示 "Configuration incomplete" 或 "Neovim config directory incomplete":请确保在本仓库根目录(如 ~/.config/nvim)下执行 ./install.sh;确认目录内包含 init.lua 与 lua/,若从别处复制请保证复制了完整目录结构。
如果安装时提示配置文件已存在,安装脚本会自动备份。备份文件位于:
~/.config/nvim.backup.YYYYMMDD_HHMMSS
问题:Neovim 找不到配置文件或使用了错误的路径。
诊断步骤:
-
检查 Neovim 实际使用的配置路径: 在 Neovim 中运行:
:echo stdpath('config')
这会显示 Neovim 当前实际使用的配置目录路径。
-
验证环境变量: 在 Git Bash 中运行
echo $XDG_CONFIG_HOME应该显示正确的路径(C:\Users\<用户名>\.config\) -
检查配置文件位置: 确认配置文件已复制到
~/.config/nvim/目录(或stdpath('config')显示的路径)
解决方案:
- 确保已正确设置
XDG_CONFIG_HOME环境变量(指向C:\Users\<用户名>\.config\) - 重新启动终端以使环境变量生效
- 如果
stdpath('config')显示的是旧路径(AppData\Local\nvim),检查是否存在$HOME/.config/nvim目录 - 如果旧路径存在但新路径不存在,Neovim 可能会使用旧路径。建议:
- 将配置文件从旧路径迁移到新路径
- 或者删除旧路径,强制使用新路径
注意:Neovim 0.10+ 会优先使用 $HOME/.config/nvim,如果该目录存在,会忽略旧的 AppData\Local\nvim 路径。使用 :echo stdpath('config') 可以确认 Neovim 实际使用的路径。
- 检查网络连接
- 确保 Neovim 版本 >= 0.8.0
- 查看 Neovim 日志:
:messages
如果 :checkhealth 显示警告或错误:
-
运行安装脚本自动修复:
./install.sh
脚本会自动安装缺失的工具和依赖。
-
手动安装缺失的工具:
- Go:
winget install GoLang.Go(Windows) 或使用系统包管理器 - Composer: 下载 phar 文件或使用包管理器
- tree-sitter CLI:
npm install -g tree-sitter-cli - pnpm:
npm install -g pnpm - neovim Ruby gem:
gem install neovim(如果使用 Ruby)
- Go:
-
检查环境变量:
- 确保
APPDATA环境变量在 Windows 上正确设置(Git Bash 需要) - 确保工具的可执行文件在系统 PATH 中
- 确保
-
查看详细日志: 保存健康检查日志并查看具体错误信息。
本配置与 install.sh 均按操作系统分支,保证在 Windows、macOS、Linux 上行为一致且可预期。
- Python / DAP:Python 由 uv 管理,
install.sh会将 venv 路径注入init.lua的python3_host_prog,DAP 使用该 Python(venv 内已安装 debugpy);无需额外配置。 - opencode(可选):AI 功能依赖 opencode CLI。
install.sh会按系统检测 PATH 中的opencode;若检测到则自动将路径写入vim.g.opencode_cmd。未安装时可忽略 opencode 的 health 报错或暂时禁用 opencode 插件;安装方法见 opencode。 - snacks:已通过
ui_snacks在启动时加载(lazy=false, priority=1000),与 opencode 共用,无需用户额外操作。 - TreeSitter:非 Windows 系统会自动安装 noice 等所需的解析器(vim、regex、lua、bash、markdown、markdown_inline);Windows 因路径/编译兼容性不自动安装,若需 noice 命令行高亮可手动执行
:TSInstall vim regex lua bash markdown markdown_inline。
Neovim 提供了 :checkhealth 命令来检查配置和插件的健康状态。install.sh 脚本已集成健康检查修复功能,会自动安装缺失的工具和依赖。
在 Neovim 中执行:
:checkhealth在交互式 nvim 中执行以下命令序列:
:redir > nvim_checkhealth.log
:checkhealth
:redir END操作步骤:
- 打开 nvim:
nvim - 执行
:redir > nvim_checkhealth.log开始重定向输出 - 执行
:checkhealth执行健康检查(会显示完整输出) - 执行
:redir END结束重定向 - 退出 nvim:
:q - 查看日志:
cat nvim_checkhealth.log
追加模式(如果需要追加到现有文件):
:redir >> nvim_checkhealth.log
:checkhealth
:redir END在终端中直接执行(会打开一次 nvim 窗口后退出):
nvim --cmd "redir > nvim_checkhealth.log" -c "checkhealth" -c "redir END" -c "q"无界面执行(推荐在脚本/CI 中使用):使用 --headless 不弹窗,适合脚本或 cron:
nvim --headless --cmd "redir > nvim_checkhealth.log" -c "checkhealth" -c "redir END" -c "qa!"在仓库根目录执行,将 checkhealth 结果写入指定文件(不指定则写入当前目录的 nvim_checkhealth.log):
./scripts/common/utils/nvim_checkhealth_to_log.sh
./scripts/common/utils/nvim_checkhealth_to_log.sh /tmp/my_health.loginstall.sh 脚本已集成健康检查修复功能,会自动:
-
安装语言工具:
- Go(通过 winget 或包管理器)
- Composer(下载 phar 文件)
- Ruby(检查是否已安装)
-
安装开发工具:
- tree-sitter CLI(通过 npm)
- pnpm(通过 npm)
- neovim Ruby gem(如果 Ruby 可用)
-
修复配置问题:
- 禁用不需要的 provider(Perl、Ruby 等,见
lua/basic.lua) - 配置
g:python3_host_prog、g:node_host_prog(node_host_prog 指向 neovim host 脚本neovim/bin/cli.js) - 确保环境变量正确传递
- 禁用不需要的 provider(Perl、Ruby 等,见
为通过 :checkhealth 所安装的工具与推荐执行顺序如下,便于新环境复现。
安装的工具
| 类别 | 工具 |
|---|---|
| 系统包(按需) | xclip / xsel(clipboard)、go、ruby、composer |
Python venv(install.sh) |
pynvim、pyright、ruff-lsp、debugpy、black、isort、flake8、mypy |
Mason LSP(ensure_installed) |
lua_ls、bashls、clangd、pyright、rust_analyzer、jsonls、yamlls、marksman |
| 可选 | tree-sitter-cli、pnpm(npm 全局) |
推荐脚本执行顺序
- 生成健康检查日志:
./scripts/common/utils/nvim_checkhealth_to_log.sh(可选指定路径,如/tmp/nvim_health.log) - 安装环境与 provider:
cd ~/.config/nvim && ./install.sh(需先安装 uv、fnm、nvim) - 可选:headless 安装 Mason LSP:
nvim --headless -c "lua vim.wait(10000)" -c "MasonInstall lua_ls bashls clangd pyright rust_analyzer jsonls yamlls marksman" -c "qa!" - 再次执行步骤 1 验证:
./scripts/common/utils/nvim_checkhealth_to_log.sh
如果网络环境需要代理,可以通过环境变量配置:
export PROXY_HOST=127.0.0.1
export PROXY_PORT=7890
export USE_PROXY=1
./install.shNeovim 内使用代理:为保证 lazy.nvim、mason、treesitter 等所有组件的网络请求走代理,建议在启动 nvim 的终端中先设置代理再打开 nvim,例如:
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
nvim或使用 NVIM_PROXY_URL(若未设置 http_proxy/HTTP_PROXY,basic.lua 会据此自动设置):export NVIM_PROXY_URL=http://127.0.0.1:7890。
或禁用代理:
export USE_PROXY=0
./install.sh- 插件配置文件按功能分类命名,便于管理和查找
- 每个插件配置文件都包含插件说明、GitHub 链接和配置选项
- 使用 lazy.nvim 的延迟加载特性优化启动速度
- 定期运行
:Lazy update更新插件 - 运行
:MasonUpdate更新 LSP 服务器和工具 - 定期运行
:checkhealth检查配置健康状态
此配置来自独立的 GitHub 仓库:
- 仓库地址: https://github.com/xiaolitongxue666/nvim
- 详细文档请参考原始仓库的 README.md