配置按键映射
Vim 强大的一个重要原因是它的高度可配置性。你可以自定义各种快捷键,让它用起来更符合自己的使用习惯从而更得心应手。
vim 里最基本的映射配置有 map、noremap、unmap、mapclear 几种。
- map
递归的映射
- noremap
非递归的映射
- unmap
删除某个映射
- mapclear
清除某个映射
同 Vim 下的其他命令一样,map 命令的名字往往由好几段组成。在不同的模式下,同一组按键可以被映射到不同的组合上,前缀作为命令本身的修饰符,微调命令的效果。map 有以下几种前缀:
- n
在普通模式下生效
- v
在可视模式下生效
- i
在插入模式下生效
- c
在命令行模式下生效
递归和非递归的映射
递归的映射其实很好理解,也就是如果键 a 被映射成了 b,c 又被映射成了 a,如果映射是递归的,那么 c 就被映射成了 b。
:map a b
:map c a
对于 c 效果等同于:
:map c b
默认的 map 就是递归的。如果遇到 nore 这种前缀,比如 :noremap,就表示这种 map 是非递归的。
命令模式下的实例
新建一个 mapping,将 b 映射成 a。在普通模式下,按下 b,会进入插入模式:
:nmap b a
新建一个 mapping,赶紧进入插入模式,输入 bug 这个单词吧!
:imap b a
注意如果向上边那样,按 b 输入的确是 a,那么恭喜,你已经把 vim 的按键弄得乱七八糟了,试着用 unmap 和 mapclear 清除这些 mapping 吧。
写入配置文件
把常用的快捷键操作写入 .vimrc 中,使其永久生效是个不错的主意,这样每次打开 vim 就会自动准备好。一般自定义的快捷键映射都使用非递归的方式。下边的快捷键定义在普通模式下按 Ctrl 和相应的上下左右键,跳转到分割的屏幕上。
"split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-H> <C-W><C-H>
nnoremap <C-L> <C-W><C-L>