想要配置一个可以在编辑模式和普通模式下使用的快捷键,通常需要两个命令:
:nnoremap <C-s> :w<cr>
:inoremap <C-s> <esc>:w<cr>a
有没有办法将它们组合成一条可以同时作用于多种模式的指令?
答案1
:help map-table
:
Mode | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang |
Command +------+-----+-----+-----+-----+-----+------+------+
[nore]map | yes | - | - | yes | yes | yes | - | - |
n[nore]map | yes | - | - | - | - | - | - | - |
[nore]map! | - | yes | yes | - | - | - | - | - |
i[nore]map | - | yes | - | - | - | - | - | - |
c[nore]map | - | - | yes | - | - | - | - | - |
v[nore]map | - | - | - | yes | yes | - | - | - |
x[nore]map | - | - | - | yes | - | - | - | - |
s[nore]map | - | - | - | - | yes | - | - | - |
o[nore]map | - | - | - | - | - | yes | - | - |
t[nore]map | - | - | - | - | - | - | yes | - |
l[nore]map | - | yes | yes | - | - | - | - | yes |
显示 Vim 有*map
覆盖多种模式的命令,但没有覆盖所有模式的命令。因此,您可以使用以下命令覆盖所有模式:
:map
,:map!
,:tmap
,:lmap
,
并且您必须:*map
对正常模式和插入模式使用两个命令。
但是两个映射的 RHS 并不相同,因此即使:*map
存在这样的命令,您也无法使用它。