vim快捷键映射和模式 下载本文

内容发布更新时间 : 2025/1/7 10:18:18星期一 下面是文章的全部内容请认真阅读。

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

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