nvim/init.lua
xfy e0c2b38b3b refactor: 重构代码组织,统一模块职责与懒加载策略
- 拆分 pack.lua 过载内容:starter→plugins/starter.lua, files→plugins/files.lua
- 统一 Git 键位到 git.lua,统一 pick 键位到 pick.lua
- 移动 TextYankPost autocmd 从 options.lua 到 autocmds.lua
- 修正 colors_name 与文件名匹配,删除 4 个未使用 colorscheme
- 删除 keymaps.lua 重复映射,移除 all_modules 中的 ex-colors
- 修正 plugins/ 文件头注释路径,删除 moonfly 残留变量
- 提取 mini.files 公共函数消除 starter buffer 中的重复逻辑
2026-06-04 15:21:44 +08:00

87 lines
4.9 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================================================
-- Neovim 配置文件入口 (init.lua)
-- =============================================================================
-- 本文件是 Neovim 启动时第一个加载的配置文件。
-- 设计目标:最小化启动开销,所有重模块均通过自定义懒加载框架延迟加载。
--
-- 文件加载顺序:
-- 1. init.lua → 禁用内置插件、设置 colorscheme、加载核心模块
-- 2. options.lua → 全局选项 (number, indent, clipboard 等)
-- 3. keymaps.lua → 键位映射 (leader = space)
-- 4. autocmds.lua → 自动命令 (恢复光标位置、折叠、yank 高亮等)
-- 5. usercmds.lua → 自定义命令 (:PackAdd, :PackDel, :PackUpdate)
-- 6. pack.lua → 插件声明与懒加载配置
-- =============================================================================
-- 记录启动时间点,用于在 starter 页脚展示启动耗时。
-- vim.uv (Neovim 0.10+) 是 libuv 的绑定,提供高性能计时器;
-- vim.loop 是旧版兼容名,在 0.10 之前使用。
_G.nvim_start_time = (vim.uv or vim.loop).hrtime()
-- =============================================================================
-- 禁用不需要的内置插件
-- =============================================================================
-- Neovim 默认会加载大量内置插件netrw、tar、zip 等),
-- 这些插件会在 startup 阶段 source 对应的 plugin/*.vim 文件,增加启动时间。
-- 通过设置 loaded_* 全局变量为 1真值可以跳过这些插件的加载。
--
-- 注意loaded_syntax 设为 1 是为了避免旧版 Vim 兼容的 syntax 加载路径;
-- 实际语法高亮由 treesitter 接管,不受影响。
vim.g.loaded_2html_plugin = 1 -- :TOhtml 命令(将 buffer 导出为 HTML
vim.g.loaded_getscript = 1 -- GetScript 插件(自动下载脚本)
vim.g.loaded_getscriptPlugin = 1 -- GetScript 插件主体
vim.g.loaded_gzip = 1 -- Gzip 压缩文件读写支持
vim.g.loaded_logipat = 1 -- LogiPat 逻辑模式匹配
vim.g.loaded_matchit = 1 -- % 匹配扩展(由 treesitter 或 mini.pairs 替代)
vim.g.loaded_matchparen = 1 -- 括号匹配高亮(由 treesitter 替代)
vim.g.loaded_netrw = 1 -- Netrw 文件浏览器(由 mini.files 替代)
vim.g.loaded_netrwFileHandlers = 1 -- Netrw 文件处理器
vim.g.loaded_netrwPlugin = 1 -- Netrw 插件主体
vim.g.loaded_netrwSettings = 1 -- Netrw 设置
vim.g.loaded_rrhelper = 1 -- RRHelperR 语言相关)
vim.g.loaded_spellfile_plugin = 1 -- 拼写文件自动下载
vim.g.loaded_tar = 1 -- Tar 归档支持
vim.g.loaded_tarPlugin = 1 -- Tar 插件主体
vim.g.loaded_tutor_mode_plugin = 1 -- Vim Tutor 教程模式
vim.g.loaded_vimball = 1 -- Vimball 归档格式
vim.g.loaded_vimballPlugin = 1 -- Vimball 插件主体
vim.g.loaded_zip = 1 -- Zip 归档支持
vim.g.loaded_zipPlugin = 1 -- Zip 插件主体
vim.g.loaded_rplugin = 1 -- 远程插件框架
vim.g.loaded_tohtml = 1 -- :TOhtml 的另一入口
vim.g.loaded_syntax = 1 -- 旧版 syntax 自动加载
vim.g.loaded_synmenu = 1 -- Syntax 菜单
vim.g.loaded_optwin = 1 -- 选项窗口 (:options)
vim.g.loaded_compiler = 1 -- 编译器插件自动加载
vim.g.loaded_bugreport = 1 -- Bug 报告生成
vim.g.loaded_ftplugin = 1 -- 文件类型插件(手动管理)
-- =============================================================================
-- 启用 Neovim 0.12+ 内置 UI 增强
-- =============================================================================
-- vim._core.ui2 是 Neovim 0.12 实验性的 UI 增强模块,
-- 启用后提供更现代的默认界面行为(如更好的消息处理)。
require("vim._core.ui2").enable({})
-- =============================================================================
-- 加载核心配置模块
-- =============================================================================
-- 这些模块按顺序加载,后续模块可以依赖前面模块的设置。
-- 例如 pack.lua 中使用的键位映射依赖于 keymaps.lua 中设置的 leader 键。
require("options") -- 全局 vim 选项设置
require("keymaps") -- 键位映射定义
require("autocmds") -- 自动命令autocmd
require("usercmds") -- 用户自定义命令
require("pack") -- 插件管理与懒加载配置
-- =============================================================================
-- Colorscheme 设置
-- =============================================================================
-- 应用 colorscheme。catppuccin-mocha 的定义在 colors/catppuccin-mocha.lua 中。
-- 该文件是一个精简版,只包含 Mocha 变体的调色板和高亮组定义。
vim.cmd("colorscheme ex-catppuccin-mocha")
-- 记录 init.lua 执行完成时间(含 colorscheme供启动页展示更接近 --startuptime 的耗时。
-- pack.lua 中的 footer 优先使用 VimEnter 时间,回退到此时间点。
_G.nvim_init_done = (vim.uv or vim.loop).hrtime()