使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来。例如使用以下命令,可以通过F5键将单词用花括号括起来:
:map <F5> i{ea}<Esc>
其中:i{将插入字符{,然后使用Esc退回到命令状态;接着用e移到单词结尾,a}增加字符},最后退至命令状态。在执行以上命令之后,光标定位在一个单词上(例如amount),按下F5键,这时字符就会变成{amount}的形式。
使用下表中不同形式的map命令,可以针对特定的模式设置键盘映射:
Command 命令 | Normal 常规模式 | Visual 可视化模式 | Select 选择模式 | Operator Pending 运算符模式 | Insert 插入模式 | Command Line 命令行模式 | Terminal-Job 终端作业模式 | Help 帮助信息 | |
:map | :noremap | y | y | y | y | :h mapmode-nvo | |||
:nmap | :nnoremap | y | :h mapmode-n | ||||||
:vmap | :vnoremap | y | y | :h mapmode-v | |||||
:xmap | :xnoremap | y | :h mapmode-x | ||||||
:smap | :snoremap | y | :h mapmode-s | ||||||
:omap | :onoremap | y | :h mapmode-o | ||||||
:map! | :noremap! | y | y | :h mapmode-ic | |||||
:imap | :inoremap | y | :h mapmode-i | ||||||
:lmap | :lnoremap | y | y | :h mapmode-l | |||||
:cmap | :cnoremap | y | :h mapmode-c | ||||||
:tmap | :tnoremap | y | :h mapmode-t |
Operator-pending模式,是指当你输入操作符(比如d)时,然后继续输入的移动步长和文本对象(dw)的状态。
第一列命令定义的映射,仍然可以被重新映射;第二列命令(包含noremap)定义的映射,是不可以被重新映射的。
使用以下命令,可以在Normal Mode和Visual/Select Mode下,利用Tab键和Shift-Tab键来缩进文本:
nmap <tab> V>
nmap <s-tab> V<
vmap <tab> >gv
vmap <s-tab> <gv
使用以下命令,指定F10键来新建标签页:
:map <F10> <Esc>:tabnew<CR>
其中:<Esc>代表Escape键;<CR>代表Enter键;而功能键则用<F10>表示。首先进入命令行模式,然后执行新建标签页的:tabnew命令,最后返回常规模式。
同理:对于组合键,可以用<C-Esc>代表Ctrl-Esc;使用<S-F1>表示Shift-F1。对于Mac用户,可以使用<D>代表Command键。
注意:Alt键可以使用<M-key>或<A-key>来表示。
关于键盘符号的详细说明,请参考下表。使用:help key-notation
命令可以查看相关帮助信息。
Keys | Notation |
<BS> | Backspace |
<Tab> | Tab |
<CR> | Enter |
<Enter> | Enter |
<Return> | Enter |
<Esc> | Escape |
<Space> | Space |
<Bar> | | 竖直线 |
<Up> | Up arrow |
<Down> | Down arrow |
<Left> | Left arrow |
<Right> | Right arrow |
<F1> <F12> | Function keys 1 to 12 |
#1 #9 #0 | Function keys F1 to F9, F10 |
<Insert> | Insert |
<Del> | Delete |
<Home> | Home |
<End> | End |
<PageUp> | Page up |
<PageDown> | Page down |
使用:map
命令,可以列出所有键盘映射。其中第一列标明了映射在哪种模式下工作:
标记 | 模式 |
<space> | 常规模式,可视化模式,选择模式,运算符模式 |
n | 常规模式 |
v | 可视化模式,选择模式 |
s | 选择模式 |
x | 可视化模式 |
o | 运算符模式 |
! | 插入模式,命令行模式 |
i | 插入模式 |
l | 插入模式,命令行模式,Lang-Arg模式 |
c | 命令行模式 |
t | 终端作业模式 |
使用下表中不同形式的map命令(不带任何参数),可以列出针对特定模式设置的键盘映射:
Command 命令 | Normal 常规模式 | Visual 可视化模式 | Select 选择模式 | Operator Pending 运算符模式 | Insert 插入模式 | Command Line 命令行模式 | Terminal-Job 终端作业模式 | |
:map | :noremap | y | y | y | y | |||
:nmap | :nnoremap | y | ||||||
:vmap | :vnoremap | y | y | |||||
:xmap | :xnoremap | y | ||||||
:smap | :snoremap | y | ||||||
:omap | :onoremap | y | ||||||
:map! | :noremap! | y | y | |||||
:imap | :inoremap | y | ||||||
:lmap | :lnoremap | y | y | |||||
:cmap | :cnoremap | y | ||||||
:tmap | :tnoremap | y |
如果想要取消一个映射,可以使用以下命令:
:unmap <F10>
注意:必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。
针对不同模式下的键盘映射,需要使用与其相对应的unmap命令。例如:使用:iunmap
命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用:nunmap
命令。
使用以下命令,可以取消指定模式中的所有键盘映射。请注意,此命令将会移除所有用户定义和系统默认的键盘映射。
:mapclear
Command 命令 | Normal 常规模式 | Visual 可视化模式 | Select 选择模式 | Operator Pending 运算符模式 | Insert 插入模式 | Command Line 命令行模式 | Terminal-Job 终端作业模式 | |
:unmap | :mapclear | y | y | y | y | |||
:nunmap | :nmapclear | y | ||||||
:vunmap | :vmapclear | y | y | |||||
:xunmap | :xmapclear | y | ||||||
:sunmap | :smapclear | y | ||||||
:ounmap | :omapclear | y | ||||||
:unmap! | :mapclear! | y | y | |||||
:iunmap | :imapclear | y | ||||||
:lunmap | :lmapclear | y | y | |||||
:cunmap | :cmapclear | y | ||||||
:tunmap | :tmapclear | y |