VIM map
map
map不带前缀等于 n+v+o
* nore 非递归;若递归:a->b, c->a 即递归为 c->b
* n 普通模式下生效
* v 可视模式下生效
* i 插入模式下生效
* c 命令模式下生效
* o 操作模式下生效,操作符等待中 ("d","y","c" 等等之后)
格式
* :map {lhs} {rhs} 把键系列 {lhs} 映射为 {rhs}
* :unmap {lhs} 取消映射
* :mapclear 取消所有map绑定
键表
* <k0> - <k9> 小键盘 0 到 9
* <S-...> Shift+键
* <C-...> Control+键
* <M-...> Alt+键 或 meta+键
* <A-...> 同 <M-...>
* <Esc> Escape 键
* <Up> 光标上移键
* <Space> 插入空格
特殊参数
<buffer>
如果这些映射命令的第一个参数是<buffer>,映射将只局限于当前缓冲区(也就是你此时正编辑的文件)
:map <buffer> ,w /a<CR> 当前文件,“,w”将在当前缓冲区里查找字符a
<silent>
<silent>是指执行键绑定时不在命令行上回显
:map <silent> ,w /abcd<CR> ,w查找abcd时,命令行上不会显示/abcd
<special>
<special>一般用于定义特殊键怕有副作用的场合
:map <special> <F12> /Header<CR>
<expr>
如果定义新映射的第一个参数是<expr>,那么参数会作为表达式来进行计算
:inoremap <expr> <C-L> ListItem()
插入模式下,CTRL-L插入顺序的列表编号,并返回
<unique>
一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败
<Leader>和mapleader变量
:map <Leader>A another line<Esc>
如果mapleader变量没有设置,则用默认的反斜杠代替
等效:map \A another line<Esc>
如果设置了mapleader变量,如let mapleader = ","
等效:map ,A another line<Esc>