neovim 键位映射

neovim 键位映射

neovim的键位映射是指将键盘上的一组按键绑定到vim 插件的某一个功能。

7 种模式

官方文档原文:

There are seven sets of mappings

For Normal mode: When typing commands.

For Visual mode: When typing commands while the Visual area is highlighted.

For Select mode: like Visual mode but typing text replaces the selection.

For Operator-pending mode: When an operator is pending (after “d”, “y”, “c”, etc.). See below: omap-info.

For Insert mode. These are also used in Replace mode.

For Command-line mode: When entering a “:” or “/” command.

For Terminal mode: When typing in a :terminal buffer.

  1. 正常模式,也是打开文件后的默认模式。在此模式下,可以执行vim的基本操作。其他的任意模式均可以通过esc键回退到正常模式。
  2. 可视模式,在正常模式执行v命令选中对应的文本,进入此模式。
  3. 选择模式,和可视模式类似,也是通过v命令先选中文本,然后可以对选中的文本进行替换。
  4. 追加操作符模式,在正常模式执行完"d", “y”, "c"等操作后可以追加一个操作符。
  5. 插入模式,在正常模式执行 “a”, “i”, "o"等命令后对文本进行操作。
  6. 命令行模式,在正常模式执行 “:”, “/” 命令后进入此模式。
  7. 终端模式,正常模式执行":terminal"命令后进入此模式,此模式模拟进入shell 的操作。通过再进入插入模式,即可执行shell 操作。

11种映射命令

这11种映射命令可以在7种模式中进行键位映射。

COMMANDSMODES
:map :noremap :unmapNormal, Visual, Select, Operator-pending
:nmap :nnoremap :nunmapNormal
:vmap :vnoremap :vunmapVisual and Select
:smap :snoremap :sunmapSelect
:xmap :xnoremap :xunmapVisual
:omap :onoremap :ounmapOperator-pending
:map! :noremap! :unmap!Insert and Command-line
:imap :inoremap :iunmapInsert
:lmap :lnoremap :lunmapInsert, Command-line, Lang-Arg
:cmap :cnoremap :cunmapCommand-line
:tmap :tnoremap :tunmapTerminal

6种映射参数

6种映射参数如下。

  • <buffer>

    此映射命令在当前buffer中立即生效。

  • <nowait>

    当匹配到输入的字符时立即执行,不再等待可能出现的后续字符。

  • <silent>

    让映射命令静默执行,不在命令行打印回显。

  • <script>

    防止一个功能被多次绑定。

  • <unique>

    防止一个键位组合被多次绑定。

  • <expr>

    可以在{rhs}中使用表达式(函数)。

2种键位映射方案

通过API设置映射键

API定义如下

nvim_set_keymap({mode}, {lhs}, {rhs}, {*opts})
Parameters:
    - {mode} 模式简写
    	"n", "i", "v", "x" for nmap, imap, vmap, xmap
    	"!", "" for :map!, :map
    	"ia", "ca" or "!a" for abbreviation in Insert mode, Cmdline mode, or both
    - {lhs} 要绑定的键位组合
    - {rhs} 要绑定的目标功能
    - {*opts} 支持除了buffer之外的映射参数,此外,还支持 "noremap","desc","callback","replace_keycodes" 等参数

此API的调用方式为,vim.api.nvim_set_keymap()

例子

vim.api.nvim_set_keymap(
    "n",
    "<F6>",
    [[<cmd>lua require('cscope_maps').cscope_prompt('s', vim.fn.expand("to find a string"))<cr>]],
    { noremap = true, silent = true }
),

在正常模式将功能键 F6 绑定到 cscope_maps 这个lua 模块的某项功能上。

通过命令设置映射键

{command} {argument} {lhs} {rhs}
	- {command} 11种映射命令
	- {argument} 6种映射参数
	- {lhs} 要绑定的键位组合
	- {rhs} 要绑定的目标功能

特殊键位

标记法描述
<Nul>0
<BS>退格键
<Tab>tab键
<NL>换行
<CR> <Return> <Enter>回车
<Esc>esc 键
<Space>空格键
<lt>小于号
<Bslash>\
<Bar>|
<Del>delete 键
<CSI>主要用于检测terminal类型
<EOL>根据系统不同可以是<CR>, <NL> 或者 <CR> <NL>
<Ignore>取消字符等待功能
<NOP>no-op: 什么都不做
<Up> <Down> <Left> <Right>光标上下左右移动键
<S-Up> <S-Down> <S-Left> <S-Right>shift键 + 光标上下左右移动键
<C-Left> <C-Right>ctrl键 + 光标左右移动键
<F1> - <F12>功能键 F1 到 F12
<S-F1> - <S-F12>shift键 + 功能键 F1 到 F12
<Help> <Undo> <Insert>帮助、重做、插入键
<Home> <End>home、end 键
<PageUp> <PageDown>翻页键
<kUp> <kDown> <kLeft> <kRight>小键盘对应键位
<kHome> <kEnd> <kOrigin>小键盘对应键位
<kPageUp> <kPageDown> <kDel>小键盘对应键位
<kPlus> <kMinus> <kMultiply> <kDivide>小键盘对应键位
<kPoint> <kComma> <kEqual> <kEnter>小键盘对应键位
<k0> - <k9>小键盘对应键位
<S-…>shift键 + 任意键
<C-…>ctrl键 + 任意键
<M-…> <A-…>alt键 + 任意键
<D-…>command键 + 任意键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值