-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.lua
More file actions
86 lines (80 loc) · 4.9 KB
/
init.lua
File metadata and controls
86 lines (80 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
-- =============================================================================
-- 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 -- RRHelper(R 语言相关)
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()