设置leader键
可以用下方方式映射leader键
vim.g.mapleader = " "
删除键盘映射
可以用以下方式删除键盘映射
vim.keymap.del( {mode}, {lhs}, {opt})
- mode: (string or table),指模式。
- lhs:(string),要删除的映射。
-
opt:(table or nil),选项,可为空,默认全为false。
- buffer:(bool or number),从给定缓冲区中删除映射。当
0
或true
时,使用当前缓冲区。
- buffer:(bool or number),从给定缓冲区中删除映射。当
例:
vim.keymap.del({'n', 'i', 'v'}, '<leader>w', { buffer = 5 })
即在 n i v 模式下将删除按键 leader + w
仅在第五个 buffer
有效
设置键盘映射
可以用以下方式创建键盘映射
vim.keymap.set({mode} , {lhs} , {rhs} , {opts})
-
mode:(string or table),指模式,可用
table
的形式映射多个模式。 - lhs:(string),要绑定的按键。
- rhs:(string or funtion)对应按键功能,也可以是函数,也可以是三目运算。
-
opt:(table or nil),选项,默认全为false。
- buffer:(bool or number),从给定缓冲区中删除映射,当
0
或true
时,使用当前缓冲区。 - noremap:(bool),非递归模式,仅映射到按键功能,不会向下递归映射。
- remap:(bool),递归模式,若按键功能映射到别的按键,则会向下递归映射。
- expr:(bool),表达式映射,即右边的命令是一个表达式,它会返回一个字符串作为实际执行的命令。
- nowait: (bool),不等待用户输入,即在按下映射的第一个键后立即执行。
- script: (bool),脚本局部映射,即只在当前脚本中有效。
- silent: (bool),不显示命令行,即不打印右边的命令。
- unique: (bool),唯一映射,即如果已经存在相同的映射,那么会报错。
- buffer:(bool or number),从给定缓冲区中删除映射,当
例 1:
vim.keymap.set("n", "<Leader>s", ":w<enter>", {noremap = true, silent = true})
在 n
模式下将 leader + s
映射为保存,非递归模式,不显示命令行。
例 2:
vim.keymap.set('n', 'o', function() print("Hello World") end)
在 n
模式下按 o
会在命令行打印hello world
。
例 3:
vim.keymap.set('i', '<Tab>', function()
return vim.fn.pumvisible() == 1 and "<C-n>" or "<Tab>"
end, { expr = true })
在i
模式下按tab
如果菜单可见,则相当于按下c-n
跳转到下一项,如果不可见则键入tab
。