站长之家app,263企业邮箱登录登录入口电脑版,eclipse开发微网站开发,wordpress站点统计小工具VIM - vim的几种模式和map映射之间的联系 map映射
在vim配置文件中经常会看到map、nmap、imap、vmap、vnoremap、nunmap、nmapclear等#xff0c;都是什么意思呢#xff1f;
map前的n、v、nore、un等表示下列含义#xff1a;
nore非递归n普通模式生效v可视模式生效i插入…VIM - vim的几种模式和map映射之间的联系 map映射
在vim配置文件中经常会看到map、nmap、imap、vmap、vnoremap、nunmap、nmapclear等都是什么意思呢
map前的n、v、nore、un等表示下列含义
nore非递归n普通模式生效v可视模式生效i插入模式生效c命令行模式生效un后面跟组合键, 表示删除这个映射clear清楚相关模式下所有映射 Recursive Mapping - 递归的映射
其实很好理解也就是如果键a被映射成了bc又被映射成了a如果映射是递归的那么c就被映射成了b。
:map a b
:map c a
对于c效果等同于
:map c b
默认的map就是递归的。如果遇到[nore]这种前缀比如:noremap就表示这种map是非递归的。 unmap
unmap后面跟着一个按键组合表示删除这个映射。
:unmap c
那么在map生效模式下c不再被映射到a上。
同样unmap可以加各种前缀表示影响到的模式。 mapclear
mapclear直接清除相关模式下的所有映射。 同样mapclear可以加各种前缀表示影响到的模式。
这里列出常用的一些map命令默认map命令影响到普通模式和可视模式。
:map :noremap :unmap :mapclear :nmap :nnoremap :nunmap :nmapclear :vmap :vnoremap :vunmap :vmapclear :imap :inoremap :iunmap :imapclear :cmap :cnoremap :cunmap :cmapclear 可以试试这些命令:
命令行模式下建一个mapping
现在普通模式下按b可以进入插入模式随便输入一些字符
nmap b a
现在普通模式下按b可以进入插入模式随便输入一些字符 命令行模式下建一个mapping
vmap b d
现在普通模式下按V进入了可视模式并且选定了一整行按下b可以删除整行
命令行模式下建一个mapping
imap b a
现在试着给正在编辑的这个文件输入一个字符”b”吧 :p
命令行模式下建一个mapping
cmap b c 命令行模式下 按下b会出来一个a
好了到此vim的按键已经被你弄得乱七八糟了试着用unmap和mapclear清除这些mapping吧。:] 映 射 与 运 行 模 式
有五种映射存在 - 对于普通模式: 当输入命令时. - 对于可视模式: 当输入命令并且 Visual 区域已被设置为高亮时. - 对于 Operator-pending mode: 当一个操作符正在进行中 (d, y, c,等等之后) 例如: :omap { w 会使 y{ 和 yw 一样, d{ 和 dw一样. - 对于插入模式: 也被用于替换模式. - 对于命令行模式: 当输入一个 : 或 / 命令时. 没有独立针对选择模式的映射. 和可视模式在 |Select-mode-mapping| 中的一样. 特殊情况当在普通模式里为一个命令输入一个数时对 0 的映射就会禁用。这样 在输入一个带有0的数字时不会受到对 0 键映射的干扰。 参考:
http://haoxiang.org/2011/09/vim-modes-and-mappin/ ----------- vim帮忙文档 1.3 MAPPING AND MODES :map-modes mapmode-nvo mapmode-n mapmode-v mapmode-o There are six sets of mappings - For Normal mode: When typing commands. - For Visual mode: When typing commands while the Visual area is highlighted. - For Select mode: like Visual mode but typing text replaces the selection. - For Operator-pending mode: When an operator is pending (after d, y, c, etc.). See below: omap-info. - For Insert mode. These are also used in Replace mode. - For Command-line mode: When entering a : or / command. Special case: While typing a count for a command in Normal mode, mapping zero is disabled. This makes it possible to map zero without making it impossible to type a count with a zero. Special case: While typing a count for a command in Normal mode, mapping zero is disabled. This makes it possible to map zero without making it impossible to type a count with a zero. map-overview map-modes Overview of which map command works in which mode. More details below. COMMANDS MODES :map :noremap :unmap Normal, Visual, Select, Operator-pending :nmap :nnoremap :nunmap Normal :vmap :vnoremap :vunmap Visual and Select :smap :snoremap :sunmap Select :xmap :xnoremap :xunmap Visual :omap :onoremap :ounmap Operator-pending :map! :noremap! :unmap! Insert and Command-line :imap :inoremap :iunmap Insert :lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg :cmap :cnoremap :cunmap Command-line :tmap :tnoremap :tunmap Terminal-Job Same information in a table: 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 |