nvim-lua 键盘映射详解

设置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),从给定缓冲区中删除映射。当 0true 时,使用当前缓冲区。

例:

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),从给定缓冲区中删除映射,当 0true 时,使用当前缓冲区。
    • noremap:(bool),非递归模式,仅映射到按键功能,不会向下递归映射。
    • remap:(bool),递归模式,若按键功能映射到别的按键,则会向下递归映射。
    • expr:(bool),表达式映射,即右边的命令是一个表达式,它会返回一个字符串作为实际执行的命令。
    • nowait: (bool),不等待用户输入,即在按下映射的第一个键后立即执行。
    • script: (bool),脚本局部映射,即只在当前脚本中有效。
    • silent: (bool),不显示命令行,即不打印右边的命令。
    • unique: (bool),唯一映射,即如果已经存在相同的映射,那么会报错。

例 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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容