VIM学习笔记 键盘映射 (Map)

设置键盘映射

使用: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:noremapyyyy:h mapmode-nvo
:nmap:nnoremapy:h mapmode-n
:vmap:vnoremapyy:h mapmode-v
:xmap:xnoremapy:h mapmode-x
:smap:snoremapy:h mapmode-s
:omap:onoremapy:h mapmode-o
:map!:noremap!yy:h mapmode-ic
:imap:inoremapy:h mapmode-i
:lmap:lnoremapyy:h mapmode-l
:cmap:cnoremapy:h mapmode-c
:tmap:tnoremapy: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

使用: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:noremapyyyy
:nmap:nnoremapy
:vmap:vnoremapyy
:xmap:xnoremapy
:smap:snoremapy
:omap:onoremapy
:map!:noremap!yy
:imap:inoremapy
:lmap:lnoremapyy
:cmap:cnoremapy
:tmap:tnoremapy

取消键盘映射

如果想要取消一个映射,可以使用以下命令:

:unmap <F10>

注意:必须为:unmap命令指定一个参数。如果未指定任何参数,那么系统将会报错,而不会取消所有的键盘映射。

针对不同模式下的键盘映射,需要使用与其相对应的unmap命令。例如:使用:iunmap命令,取消插入模式下的键盘映射;而取消常规模式下的键盘映射,则需要使用:nunmap命令。

使用以下命令,可以取消指定模式中的所有键盘映射。请注意,此命令将会移除所有用户定义和系统默认的键盘映射。

:mapclear

Command
命令

Normal
  常规模式  

Visual
可视化模式

Select
选择模式
Operator
Pending
运算符模式

Insert
插入模式
Command
Line
命令行模式

Terminal-Job
终端作业模式
:unmap:mapclearyyyy
:nunmap:nmapcleary
:vunmap:vmapclearyy
:xunmap:xmapcleary
:sunmap:smapcleary
:ounmap:omapcleary
:unmap!:mapclear!yy
:iunmap:imapcleary
:lunmap:lmapclearyy
:cunmap:cmapcleary
:tunmap:tmapcleary

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>