docs(readme): 补充 ex-colors、键位映射等文档; fix(pack): mini.starter/notify 添加 pcall 保护
This commit is contained in:
parent
3f0d338fb8
commit
4bd841fab1
15
README.md
15
README.md
@ -7,9 +7,10 @@
|
||||
- **内置插件管理器** — `vim.pack`(Neovim 0.12+),无需 lazy.nvim / packer
|
||||
- **自定义懒加载框架** — `lua/lazy.lua`(约 35 行),通过 `on_event` / `on_keys` / `load` 延迟加载重型模块
|
||||
- **mini.nvim 单体插件集** — starter、pick、extra、files、icons、notify、cmdline、completion、snippets、diff、surround
|
||||
- **LSP + 代码格式化** — nvim-lspconfig + mason + conform.nvim,保存时自动格式化
|
||||
- **快速启动** — 禁用约 20 个内置插件,剪贴板通过 `vim.schedule()` 延迟初始化
|
||||
- **LSP + 代码格式化** — nvim-lspconfig + mason + conform.nvim,保存时自动格式化,支持全局/Buffer 级别开关
|
||||
- **快速启动** — 禁用约 20 个内置插件,启用 Neovim 0.12+ 内置 UI 增强 (`vim._core.ui2`)
|
||||
- **启动仪表盘** — ASCII Logo + 实时模块加载统计 + 启动耗时
|
||||
- **Colorscheme 优化** — `ex-colors.nvim` 提取并生成精简版 colorscheme(默认 `ex-catppuccin-mocha`)
|
||||
|
||||
## 懒加载策略
|
||||
|
||||
@ -20,6 +21,7 @@
|
||||
| `BufReadPost` | diff、surround |
|
||||
| `BufWritePre` | conform |
|
||||
| 按键触发 | pick、files、fugitive、grugfar |
|
||||
| 命令触发 | ex-colors (`:ExColors`) |
|
||||
|
||||
## 键位映射(Leader = 空格)
|
||||
|
||||
@ -63,6 +65,7 @@
|
||||
| `gd` | 跳转到定义 |
|
||||
| `gh` | 悬停查看文档 |
|
||||
| `<leader>ca` | 代码操作 |
|
||||
| `<leader>cr` | 重命名符号 |
|
||||
| `<leader>fm` | 格式化当前 Buffer |
|
||||
| `df` | 显示行诊断浮动窗口 |
|
||||
| `<leader>ds` | 诊断位置列表 |
|
||||
@ -83,7 +86,9 @@
|
||||
| 键位 | 动作 |
|
||||
|--------------|----------------------------|
|
||||
| `<leader>ss` | 全局替换光标下的单词 |
|
||||
| `<leader>u` | 打开内置撤销树 |
|
||||
| `<leader>ud` | 打开内置撤销树 |
|
||||
| `<leader>uf` | 切换全局自动格式化 |
|
||||
| `<leader>uF` | 切换当前 Buffer 自动格式化 |
|
||||
| `<Esc>` | 清除搜索高亮 |
|
||||
| `J` | 合并行且不移动光标 |
|
||||
|
||||
@ -119,6 +124,7 @@
|
||||
:PackAdd user/repo " 添加插件
|
||||
:PackDel plugin-name " 删除插件
|
||||
:PackUpdate [name] " 更新全部或指定插件
|
||||
:ExColors! " 提取当前 colorscheme 为优化版 ex-colors
|
||||
```
|
||||
|
||||
## 文件结构
|
||||
@ -138,7 +144,8 @@ lua/plugins/
|
||||
git.lua -- Git 工具:hunk 预览、blame、文件历史
|
||||
nvim-pack-lock.json -- 插件锁定文件
|
||||
colors/
|
||||
catppuccin-*.lua -- Catppuccin 配色方案(mocha 为默认)
|
||||
ex-catppuccin-mocha.lua -- 默认配色(ex-colors 生成的优化版)
|
||||
catppuccin-*.lua -- 原始 Catppuccin 配色方案
|
||||
```
|
||||
|
||||
## 开发 / 验证
|
||||
|
||||
83
lua/pack.lua
83
lua/pack.lua
@ -152,8 +152,6 @@ local logos = {
|
||||
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝]],
|
||||
}
|
||||
|
||||
local starter = require("mini.starter")
|
||||
|
||||
-- 所有功能模块列表(用于页脚 "X/Y modules" 统计)。
|
||||
-- 口径与 lazy._loaded 一致:每个独立初始化的功能模块算一个,
|
||||
-- 不再按 vim.pack 的插件包统计(如 mini.nvim 包含多个模块)。
|
||||
@ -184,34 +182,39 @@ for _, line in ipairs(logos.f) do
|
||||
max_header_width = math.max(max_header_width, vim.fn.strdisplaywidth(line))
|
||||
end
|
||||
|
||||
starter.setup({
|
||||
autoopen = true, -- 无参数启动时自动打开
|
||||
evaluate_single = false, -- 只有一个选项时不自动执行
|
||||
items = { { name = " ", action = "", section = "" } }, -- 空选项(仅展示页眉页脚)
|
||||
header = table.concat(logos.f, "\n"), -- Logo 文本
|
||||
-- mini.starter — 启动页
|
||||
-- 使用 pcall 保护,避免首次启动插件尚未下载完成时报错
|
||||
local ok_starter, starter = pcall(require, "mini.starter")
|
||||
if ok_starter then
|
||||
starter.setup({
|
||||
autoopen = true, -- 无参数启动时自动打开
|
||||
evaluate_single = false, -- 只有一个选项时不自动执行
|
||||
items = { { name = " ", action = "", section = "" } }, -- 空选项(仅展示页眉页脚)
|
||||
header = table.concat(logos.f, "\n"), -- Logo 文本
|
||||
|
||||
-- 页脚函数:显示启动耗时和模块加载统计
|
||||
footer = function()
|
||||
-- 已加载的模块数(动态统计,包含直接加载和懒加载)
|
||||
local loaded = vim.tbl_count(require("lazy")._loaded)
|
||||
local total = #all_modules
|
||||
-- 使用 init.lua 执行完成时间,不等待 VimEnter(后者包含 runtime 插件加载耗时)
|
||||
local end_time = _G.nvim_init_done or (vim.uv or vim.loop).hrtime()
|
||||
local ms = (end_time - _G.nvim_start_time) / 1e6
|
||||
local text = string.format(" %d/%d modules | %.0f ms", loaded, total, ms)
|
||||
local text_width = vim.fn.strdisplaywidth(text)
|
||||
-- 计算左填充空格数以实现居中
|
||||
local pad = math.floor((max_header_width - text_width) / 2)
|
||||
return string.rep(" ", pad) .. text
|
||||
end,
|
||||
-- 页脚函数:显示启动耗时和模块加载统计
|
||||
footer = function()
|
||||
-- 已加载的模块数(动态统计,包含直接加载和懒加载)
|
||||
local loaded = vim.tbl_count(require("lazy")._loaded)
|
||||
local total = #all_modules
|
||||
-- 使用 init.lua 执行完成时间,不等待 VimEnter(后者包含 runtime 插件加载耗时)
|
||||
local end_time = _G.nvim_init_done or (vim.uv or vim.loop).hrtime()
|
||||
local ms = (end_time - _G.nvim_start_time) / 1e6
|
||||
local text = string.format(" %d/%d modules | %.0f ms", loaded, total, ms)
|
||||
local text_width = vim.fn.strdisplaywidth(text)
|
||||
-- 计算左填充空格数以实现居中
|
||||
local pad = math.floor((max_header_width - text_width) / 2)
|
||||
return string.rep(" ", pad) .. text
|
||||
end,
|
||||
|
||||
-- 内容钩子:水平和垂直居中
|
||||
content_hooks = {
|
||||
starter.gen_hook.aligning("center", "center"),
|
||||
},
|
||||
})
|
||||
-- 内容钩子:水平和垂直居中
|
||||
content_hooks = {
|
||||
starter.gen_hook.aligning("center", "center"),
|
||||
},
|
||||
})
|
||||
|
||||
lazy.track("starter")
|
||||
lazy.track("starter")
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- mini.files — 文件浏览器(按键触发懒加载)
|
||||
@ -282,17 +285,21 @@ vim.api.nvim_create_autocmd("VimEnter", {
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- 替换默认的 vim.notify,提供美观的浮动通知窗口。
|
||||
-- 直接初始化(轻量,不阻塞启动)。
|
||||
require("mini.notify").setup({
|
||||
content = {
|
||||
-- 简化格式:只显示消息内容,不附加时间戳等元信息
|
||||
format = function(notif)
|
||||
return notif.msg
|
||||
end,
|
||||
},
|
||||
})
|
||||
-- 将 vim.notify 重定向到 mini.notify
|
||||
vim.notify = require("mini.notify").make_notify()
|
||||
lazy.track("notify")
|
||||
-- 使用 pcall 保护,避免首次启动插件尚未下载完成时报错
|
||||
local ok_notify, notify = pcall(require, "mini.notify")
|
||||
if ok_notify then
|
||||
notify.setup({
|
||||
content = {
|
||||
-- 简化格式:只显示消息内容,不附加时间戳等元信息
|
||||
format = function(notif)
|
||||
return notif.msg
|
||||
end,
|
||||
},
|
||||
})
|
||||
-- 将 vim.notify 重定向到 mini.notify
|
||||
vim.notify = notify.make_notify()
|
||||
lazy.track("notify")
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- mini.cmdline — 增强命令行
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user