which-key

2025-09-09 00:00    #nvim   #oi  

1. 使用 which-key 最佳实践

当然,使用 which-key.nvim 的目标不仅仅是“显示按键”,更是为了构建一个可发现、有逻辑、易于记忆的键位系统。以下是一些被广泛认可的最佳实践:

1.1. 合理组织你的按键 (Organize Your Keys Logically)

这是最核心的一点。不要随意放置键位,要用分组和助记符来构建你的配置。

1.2. 编写清晰、简洁的描述 (Write Clear and Concise Descriptions)

desc 字段是用户看到的提示,它的好坏直接影响体验。

1.3. 利用 Lazy Loading (Leverage Lazy Loading)

为了优化 Neovim 的启动速度,你应该尽可能地懒加载插件。which-keylazy.nvim 插件管理器可以完美配合。

1.4. 分离你的键位配置 (Separate Your Keymap Configurations)

对于不属于任何特定插件的核心键位(例如窗口管理、缓冲区跳转),最好将它们统一放在一个地方。

这样可以让你的配置结构更加清晰,易于查找和修改。

 1-- lua/core/keymaps.lua
 2-- 使用 which-key.add() 来注册
 3local wk = require("which-key")
 4
 5wk.add({
 6  { "<leader>w", group = "Window" },
 7  { "<leader>wv", "<C-w>v", desc = "Split Vertical" },
 8  { "<leader>ws", "<C-w>s", desc = "Split Horizontal" },
 9  { "<leader>wc", "<C-w>c", desc = "Close Window" },
10
11  { "<leader>h", "<C-w>h", desc = "Navigate Left" },
12  { "<leader>j", "<C-w>j", desc = "Navigate Down" },
13  -- ... etc
14})

1.5. 善用高级功能 (Make Good Use of Advanced Features)

1.6. 总结

which-key 的最佳实践核心思想是**“设计”而非“堆砌”**。一个好的 which-key 配置本身就是一份动态、交互式的个人文档,它能引导你更高效地使用 Neovim,并最终帮你把这些键位形成肌肉记忆。

2. 定义分组在“共同前缀”上

例子

 1-- 在你的 plugins/gitsigns.lua 文件中
 2return {
 3  "lewis6991/gitsigns.nvim",
 4  -- 其他配置...
 5  keys = {
 6    -- ↓↓↓ 这就是那个特殊的“显式分组条目” ↓↓↓
 7    {
 8      "<leader>g",
 9      group = "Git", -- 子菜单的标题
10      desc = "Git (Gitsigns)", -- 在<leader>菜单中显示的描述
11      icon = "", -- Nerd Font 图标 (可选)
12      -- 注意: 这里没有第二个元素 (rhs 命令)
13    },
14    
15    -- ↓↓↓ 下面是这个分组里的具体键位 ↓↓↓
16    { "<leader>gj", "<cmd>Gitsigns next_hunk<cr>", desc = "Next Hunk" },
17    { "<leader>gk", "<cmd>Gitsigns prev_hunk<cr>", desc = "Previous Hunk" },
18    { "<leader>gp", "<cmd>Gitsigns preview_hunk<cr>", desc = "Preview Hunk" },
19    { "<leader>gs", "<cmd>Gitsigns stage_hunk<cr>", desc = "Stage Hunk" },
20    { "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<cr>", desc = "Undo Stage" },
21    { "<leader>gr", "<cmd>Gitsigns reset_hunk<cr>", desc = "Reset Hunk" },
22  },
23}