【免费下载链接】dotfiles
My dotfiles and configs
dotfiles是一个用 Git 管理的开发者环境配置仓库,其中最精华的部分是一套开箱即用的Neovim 配置——基于lazy.nvim插件管理器构建,将文件树、模糊搜索、LSP 智能提示、Git 集成等能力打包成十几个按功能拆分的 Lua 模块。对于刚接触 Neovim 的新手来说,读懂它的目录结构,就掌握了现代 Vim 配置的组织思路。
这个项目是什么?一分钟认识 dotfiles
dotfiles("dot files"的复数)就是把散落在~/.config下各处的编辑器、Shell、终端配置文件集中到一个 Git 仓库里,实现一套配置、多机同步。
本仓库采用"一个工具一个目录"的组织方式:
| 目录 | 管什么 |
|---|---|
nvim/ | Neovim 主配置(本文主角) |
vim/ | 无依赖的轻量 Vim 兜底配置 |
zsh/ | Shell 别名、Git 补全 |
tmux/、herdr/ | 终端复用器 |
ghostty/ | 终端模拟器 |
starship/ | Shell 提示符 |
yazi/ | 终端文件管理器 |
安装的核心思想是符号链接:由 scripts/symlinks.sh 读取 symlinks.conf,把仓库内配置链接到系统对应位置。比如其中一行就是:
$(pwd)/nvim:$HOME/.config/nvim也就是说,整个nvim/目录会直接映射为 Neovim 的配置目录,改仓库里的文件就等于改编辑器行为。
nvim 目录结构全解
打开nvim/目录,你会看到这样的布局:
nvim/ ├── init.lua # 入口文件:Neovim 启动时首先执行 ├── lazy-lock.json # 插件版本锁定清单 ├── nvim-troubleshooting.md └── lua/ ├── core/ # 基础层:选项、快捷键、代码片段 │ ├── options.lua │ ├── keymaps.lua │ └── snippets.lua ├── plugins/ # 插件层:一个功能一个文件 │ ├── lsp.lua │ ├── telescope.lua │ ├── neo-tree.lua │ ├── gitsigns.lua │ ├── lazygit.lua │ ├── lualine.lua │ └── themes/nord.lua └── tools/ # 实用小工具 ├── sql-runner.lua └── multiplexer-nav.lua这种"三层架构"非常值得新手借鉴:
core/——先让编辑器好用。options.lua 负责基础体验:行号、剪贴板同步、缩进、滚动偏移等约 40 项选项;keymaps.lua 把空格键设为 leader 键,并优化了j/k跨行移动、方向键调窗格大小等高频操作;snippets.lua 则存放自定义代码片段。plugins/——按功能切分插件。每个文件对应一个插件或一组相关插件,互不干扰,想删掉 Git 集成只需去掉一个require。tools/——个人效率工具。如 sql-runner.lua 直接在编辑器内运行 SQL 查询。
lazy.nvim:插件如何被自动安装
一切从 nvim/init.lua 开始。它的工作流程可以概括为四步:
- 加载基础层:先
require三个 core 模块和两个工具模块; - 引导管理器:检查
~/.local/share/nvim/lazy/lazy.nvim是否存在,若不存在就自动git clone拉取 lazy.nvim 的 stable 分支——你不需要手动装任何插件管理器; - 声明插件清单:调用
require('lazy').setup(...),把 16 个plugins/下的模块逐一注册,lazy.nvim 负责克隆、依赖解析与按需加载(延迟加载); - 会话恢复:若当前目录存在
.session.vim会话文件,自动恢复上次的窗口布局。
lazy-lock.json 记录了每个插件的精确 commit,相当于插件的package-lock.json,保证在不同机器上装出完全一致的插件版本。
插件清单速览
| 插件文件 | 能力 | 常用触发方式 |
|---|---|---|
| lsp.lua | 语言服务器 + Mason 自动装工具链 | gd跳定义、K看文档、<leader>ca代码操作 |
| telescope.lua | 模糊搜索 | <leader>sf找文件、<leader>sb切缓冲区 |
| neo-tree.lua | 文件树/缓冲区/Git 状态视图 | <leader>e左侧文件树 |
| gitsigns.lua | 行内 Git 变更高亮 | 自动 |
| lazygit.lua | 内嵌 Git TUI | 启动 LazyGit |
| lualine.lua | 现代化状态栏 | 自动 |
| autocompletion.lua | 智能补全(blink.cmp) | 输入时自动 |
| formatting.lua / linting.lua | 格式化与静态检查 | 保存时自动 |
| treesitter.lua | 精确语法高亮 | :TSUpdate更新 |
| debug.lua | DAP 调试器 | 配合 nvim-dap |
| themes/nord.lua | Nord 暗色主题 | 自动 |
以 lsp.lua 为例,文件里维护了一张servers表(Lua、Python/Ruff、JSON、SQL、Terraform、Docker 等语言服务器),并借助 Mason 工具安装器首次启动时自动下载所需的全部 LSP 服务器和格式化器——新手无需再手动brew install各种语言服务。
最快安装步骤:从 clone 到打开编辑器
在终端中依次执行:
git clone https://gitcode.com/gh_mirrors/dotfiles322/dotfiles cd dotfiles ./install.shinstall.sh 会交互式地执行符号链接、Homebrew 软件安装(由 homebrew/Brewfile 驱动)等步骤。装完后启动nvim,首次打开时 lazy.nvim 会自动安装所有插件,稍等片刻即可看到完整界面。
💡 不想要符号链接方式?也可以只把
nvim/目录复制到~/.config/nvim,效果相同。
新手最该记住的快捷键(leader = 空格)
在 keymaps.lua 中,空格被设为 leader 键(<Space>本身被置空),日常高频组合:
<Space>sf—— 模糊查找项目文件<Space>sb—— 在已打开的缓冲区间跳转<Space>e—— 左侧展开文件树gd/gr—— 跳到定义 / 查找引用K—— 悬浮显示当前符号文档<C-s>/<C-q>—— 保存 / 退出<Tab>/<S-Tab>—— 下一个 / 上一个缓冲区
出问题怎么办?内置排障清单
项目自带一份简洁的排障笔记 nvim-troubleshooting.md,核心命令只有四个:
| 命令 | 用途 |
|---|---|
:checkhealth | 全面体检 Neovim 环境 |
:TSUpdate | 更新 Treesitter 语法高亮 |
:Mason | 查看/重装 LSP 及外部工具 |
nerdfix check <文件> | 修复 Nerd Font 图标乱码 |
总结
这套 dotfiles 展示的 Neovim 入门范式可以浓缩为三句话:
init.lua只做引导,业务全部下沉到lua/下按职责拆分的模块;- lazy.nvim 自动处理一切——管理器自举、插件安装、依赖解析、版本锁定;
- 配置即代码,用 Git + 符号链接让开发环境可以一键复制到新机器。
按这个结构组织你自己的 Neovim 配置,未来无论加多少插件,目录都不会失控。
【免费下载链接】dotfiles
My dotfiles and configs
相关推荐
Neovim 现代配置入门指南:完整拆解 dotfiles 里基于 lazy.nvim 的 sethy 插件体系
Neovim 现代配置入门指南:完整拆解 dotfiles 里基于 lazy.nvim 的 sethy 插件体系 dotfiles 是一个持续更新的 macOS
vim-tmux-navigator与Neovim lazy.nvim插件的完美整合指南
vim tmux navigator与Neovim lazy.nvim插件的完美整合指南 想要在Vim分屏和tmux面板之间实现 无缝导航 吗?vim tmux
开发工具如何用 descriptive_statistics 快速计算均值、中位数和标准差?Ruby开发者必备教程
如何用 descriptive_statistics 快速计算均值、中位数和标准差?Ruby开发者必备教程 你是否正在寻找一个简单易用的 Ruby 统计计算工具
数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考