vim各模式含义

以前在 vim 中映射快捷键时,不是网上看被人怎么写然后拷贝回来,要么直接用 ‘map’ 来映射,根本搞不懂 ‘map’, ‘noremap’, ‘nmap’, ‘vmap’ … 之间的区别到底是什么。

今天,上网 Google 了下,不过先要从 vim 的几种模式说起。

vim 中有六种基本模式:

  1. 普通模式 (Normal-mode)

    一般,启动编辑器之后就处于普通模式,除非你设置了 ‘insertmode’。也称为命令 (command) 模式。

  2. 可视模式 (Visual-mode)

    可视模式与普通模式相似,只是光标移动会扩展高亮的区域。而其它非移动命令会作用于高亮的区域。在普通模式下,可以通过 v 或 V 或 CTRL-V 进入。如果没有关闭 ‘showmode’ 选项,窗口底部会出现 “—VISUAL—“ 字样。

  3. 选择模式 (Select-mode)

    选择模式与 Windows 下其它编辑器的选择模式很像。选中字符后,键入一个可显示字符会删掉所有被选择的字符,并进入插入模式。一般,可以在普通模式下按 gh 进入,或在 gvim 中用鼠标拖选区域。窗口底部会出现 “—SELECT—“ 字样。

  4. 插入模式 (Insert-mode)

    插入模式下你键入的内容会插入到缓冲区。一般,在普通模式下按 i 或 a 进入插入模式。窗口底部会出现 “—INSERT—“ 字样。

  5. 命令行模式 (Cmdline-mode)

    命令行模式可以在窗口底部输入一行命令。可以用 “:” 执行命令,用 “?” 和 “/“ 来查找。

  6. Ex 模式 (Ex-mode)

    与命令行模式类似,只是执行完一条命令后,会继续停留在 Ex 模式。在普通模式下,按 Q 进入 Ex 模式。

快捷键映射

快捷键映射分两种: map 和 noremap

递归映射 (map)

如果键 b 映射为键 a,然后键 c 映射为键 b,那么当按键 c 时会产生按键 a 的效果。

1
2
:map b a
:map c b

相当于

1
:map c a

非递归映射 (noremap)

1
2
:noremap b a
:noremap c b

非递归映射则不会产生递归映射一样的效果。

不同模式下的快捷键映射

在 map 与 noremap 前分别可以加 ‘n’, ‘v’, ‘x’, ‘s’, ‘o’, ‘i’, ‘l’, ‘c’ 以及 ‘map!’ 和 ‘noremap!’。

  • n 表示在普通模式下生效,如 nmap, nnoremap
  • v 表示在可视模式下生效,如 vmap, vnoremap
  • s 表示在选择模式下生效,如 smap, snoremap
  • i 表示在插入模式下生效,如 imap, inoremap
  • c 表示在命令行模式下生效,如 cmap, cnoremap

map 和 noremap 不加任何前缀的话,是 mapmode-nvo。会在普通模式,可视模式,操作符等待模式下生效。

清除模式

  • unmap
1
unmap {lhs}

在映射命令作用的模式中删除 {lhs} 的映射。该映射仍然可以在其它模式中保留其定义。

  • mapclear

在映射命令作用的模式中删除所有的映射。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值