when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.
vim 的模式,细分之下有 6 种分别为:
map 是一个映射命令,将常用的很长的命令映射到一个新的功能键上,是 vim 强大的一个重要原因
vim 中有五种映射存在:
同 vim 下的其他命令一样,命令的名字往往由好几段组成;前缀作为命令本身的修饰符,微调命令的效果
对于 map 而言,可能有这么几种前缀:
普通模式下使用 map 映射命令(与前缀叠加可以定义映射在不同模式下生效):
map,命令格式::map {lhs} {rhs},其含义是,在 :map 作用的模式中把键系列 {lhs} 映射为 {rhs},{rhs} 可进行映射扫描,即可递归映射
例如::map td :tabnew .<cr>,表示在其作用模式(普通、可视、操作符)下,输入 td 等价于输入 :tabnew .<cr>,而普通模式下输入 :tabnew . <cr> 是打开当前目录,如果再定义绑定 :map ts td,就是指在其作用模式下输入 ts 等价于 td,也就是打开当前目录
如果没有特殊需要,一般不建议递归映射
unmap,命令格式::unmap {lhs},unmap 是对应取消 map 绑定的{lhs},作用模式相同
例如::unmap td 就是取消在其作用模式中 td 的绑定,比如之前 td 被绑定为 :tabnew .<cr>,此时此绑定消失
mapclear,:mapclear 时对应取消所有 :map 绑定的
⚠️:{rhs} 之前可能显示一个特殊字符:* 表示它不可重映射;& 表示仅脚本的局部映射可以被重映射;@ 表示缓冲区的局部映射
键盘按键的表示:
有些特殊参数必须映射命令的后边,在其他任何参数的前面
<buffer> 如果这些映射命令的第一个参数是 <buffer>,映射将只局限于当前缓冲区(也就是你此时正编辑的文件)内
比如::map <buffer> ,w /a<CR>,它的意思时在当前缓冲区里定义键绑定,“,w”将在当前缓冲区里查找字符 a,同样可以在其他缓冲区里定义,:map <buffer> ,w /b<CR>,同样要清除这些缓冲区的键绑定也要加上 <buffer> 参数,比如,:unmap <buffer> ,w :mapclear <buffer>
<silent> 是指执行键绑定时不在命令行上回显
比如::map
<special> 一般用于定义特殊键怕有副作用的场合
比如::map <special> <F12> /Header<CR>
如果定义新映射的第一个参数是 <expr>,那么参数会作为表达式来进行计算,结果使用实际使用的
例如::inoremap <expr> . InsertDot(),这可以用来检查光标之前的文本并在一定条件下启动全能 (omni) 补全
<unique> 一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败
mapleader 变量对所有 map 映射命令起效,它的作用是将参数 <leader> 替换成 mapleader 变量的值
比如::map <leader>A oanother line<esc>,如果 mapleader 变量没有设置,则用默认的反斜杠代替,因此这个映射等效于,:map \A oanother line
<localLeader> 和 <leader> 类似,只不过它只作用于缓冲区,因此在设置 mapleader 和 maplocalleader 时最好区分开,不要出现冲突
be slow to promise and quick to perform.