跳到主要内容
版本:1.3

键位

最常使用的键位请参考 键位总览

如需(重)映射以<leader>开头的键位,请使用 Whichkey映射. 如果键位映射是LSP(智能)相关的,请使用 LSP映射. 其他所有情况,请使用 NeoVim映射

Leader 键

默认的Leader键是 Space。 可以通过如下配置更改:

lvim.leader = "space"

查看键位映射

使用 <Leader>sk 来查看当前设置的键位映射。

如需了解某键位是否已经被使用了:

:verbose map <TAB>
  • :nmap 普通模式
  • :vmap 可视模式
  • :imap 输入模式

或是列出所有映射:

:map

NeoVim 映射

键位(重)映射

修改或添加键位映射:

  -- X closes a buffer
lvim.keys.normal_mode["<S-x>"] = ":BufferKill<CR>"

-- Centers cursor when moving 1/2 page down
lvim.keys.normal_mode["<C-d>"] = "<C-d>zz"

删除默认键位映射

删除LunarVim默认的键位映射:

  lvim.keys.normal_mode["<C-h>"] = false
lvim.keys.normal_mode["<C-j>"] = false
lvim.keys.normal_mode["<C-k>"] = false
lvim.keys.normal_mode["<C-l>"] = false

LSP映射

如需修改LSP映射请使用 lvim.lsp.buffer_mappings.[normal|visual|insert]_mode

(重)映射

映射你自己的功能:

lvim.lsp.buffer_mappings.normal_mode['H'] = { vim.lsp.buf.hover, "Show documentation" }

或将默认的功能映射到不同的键位:

lvim.lsp.buffer_mappings.normal_mode['gk'] = lvim.lsp.buffer_mappings.normal_mode['K']

删除映射

LSP映射相比于常规映射有更高的优先级。 因此为了将某个键位用于常规映射,必须首先删除它

lvim.lsp.buffer_mappings.normal_mode['K'] = nil
lvim.keys.normal_mode['K'] = "<Cmd>echo Okay!<CR>"

Whichkey映射

如需修改whichkey映射请使用 lvim.builtin.which_key.mappings。 leader键已经被包含了。

单一映射

映射一个单一键位:

lvim.builtin.which_key.mappings["P"] = {
"<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects"
}

上面的配置包括了leader键。因此,对于上面的示例,键位映射变为<leader>P

删除单一键位映射

删除一个Whichkey映射:

lvim.builtin.which_key.mappings['w'] = {}

添加一个键到已经已存在的目录/子目录:

lvim.builtin.which_key.mappings["tP"] = {
"<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects"
}

子目录映射

映射一组键位。按<Leader>td会触发Definitions。该目录的目录名会显示为Trouble

lvim.builtin.which_key.mappings["t"] = {
name = "Trouble",
r = { "<cmd>Trouble lsp_references<cr>", "References" },
f = { "<cmd>Trouble lsp_definitions<cr>", "Definitions" },
d = { "<cmd>Trouble lsp_document_diagnostics<cr>", "Diagnostics" },
q = { "<cmd>Trouble quickfix<cr>", "QuickFix" },
l = { "<cmd>Trouble loclist<cr>", "LocationList" },
w = { "<cmd>Trouble lsp_workspace_diagnostics<cr>", "Diagnostics" },
}

替换所有的whichkey映射

清除所有的whichkey映射并替换为自己的,使用如下形式:

lvim.builtin.which_key.mappings = {
["c"] = { "<cmd>BufferClose!<CR>", "Close Buffer" },
["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" },
["h"] = { '<cmd>let @/=""<CR>', "No Highlight" },

p = {
name = "Plugins",
i = { "<cmd>Lazy install<cr>", "Install" },
s = { "<cmd>Lazy sync<cr>", "Sync" },
S = { "<cmd>Lazy clear<cr>", "Status" },
u = { "<cmd>Lazy update<cr>", "Update" },
},
}

toggleterm (终端) 映射

更改终端映射:

lvim.builtin.terminal.open_mapping = "<c-t>"