vim命令:map映射
站内链接:
- vim 笔记(1)-命令-基本命令
- vim 笔记(2)-命令-ex 命令
- vim 笔记(3)-命令-map 映射
- vim 笔记(4)-命令-输入模式
- vim 笔记(5)-配置-通用配置和术语
- vim 笔记(6)-配置-neovim
术语和命令
键映射用于改变输入键的含义, 最常见的用途是把功能键定义为一系列的命令, 其相关文档: help map-commands
.
- 正常格式:
map [arguments] {lhs} {rhs}
, 将某些{lhs}映射为{rhs}. - 删除映射格式:
unmap [arguments] {lhs}
- 清除映射格式:
mapclear [arguments]
其中{rhs}
之前存在一些特殊字符表示特定的信息:
1 | . " 表示不可重映射 |
关于命令参数的更多信息见help map-arguments
文档说明, 下面简单的介绍一些常见的参数信息以及相应的例子
1 | <buffer> " 映射仅仅作用于当前缓冲区(此时正在编辑的文件), 之后可以在另一个缓冲区设置同样键值, 不同效果的map |
命令格式
在介绍 vim 的映射命令之前可以先看下vim 模式以更好的了解 vim 的集中输入模式, 同时映射也包含在不同模式
下的映射, 下面是常见的在 map 命令之前的几种前缀:
1 | <space> " 在普通, 可视, 选择, 操作符等待模式下生效 |
在不同的 map 命令前面可能还存在一些修饰符用以表示不同的动作:
1 | nore " 禁止对{rhs}进行映射扫描, 从而避免嵌套和递归, 即lhs定义的就是rhs的键 |
最后, 除了上面的几个前缀修饰符之外还有一个 clear 后缀命令mapclear
, 其会清除相关模式下的所有映射
1 | mapclear " 清除普通模式下的所有映射 |
Rule
递归映射
递归映射: a 映射为 b,c 映射为 a,则 c 映射为 b
1 | " 两个命令等价于:map c b |
二义性
相关文档可以参考help map-ambiguous
, 当两个映射以相同的字符顺序开始,它们是有二义性的, 例如:
1 | :imap aa foo |
当 Vim 读入aa
后,它需要取得另外一个字符才能决定应该映射 aa
还是 aaa
, 这意味着输入 aa
后映射还不会展开,Vim 还在等待另一个字符.如果你接着输入一个空格,那么将插入 foo
加上空格.如果你输入一个 a
,那么将插入 bar
.
特殊键值
在 map 命令中会映射很多特殊键值, 从而提高编辑效率, 这是非常通用的方式, 下面简单介绍一些常见的键值
1 | <f1>-<f12> " F1-f12 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狂想写作本!
评论