Vim基本模式

Vim中有6个基本模式和6个基本模式的变种的辅助模式,后面的讲述中会涉及到这些模式。这里将这些模式做一个简单介绍,更多文档请参考vim手册中 *vim-modes-intro* *vim-modes* 部分的内容(可通过 :help vim-modes 浏览)。

Normal Mode

也被称作Command Mode。是Vim启动后默认进入的模式(除非设置设置了 insertmode 选项),该模式下不能编辑文件内容,但是可以接收大多数编辑指令(例如拷贝、删除、修改保存等)。

Visual mode

类似Normal Mode Mode,在Normal mode中通过 Vv 可进入该模式下,该模式中任何移动光标的动作都会将光标所经过的区域高亮,非光标移动的指令作用于高亮区域;设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- VISUAL --

具体可参见 :help Visual-mode

Select mode

类似Visual mode,但是命令有很大不同。在Visual mode中输入 <C-g> 、或者在Normal中输入 ghgHg <C-h> 等可以进入该模式。它有点像MS Windows中的选择模式,键入一个可打印的字符后,会删除选择区域并进入插入模式。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- SELECT --

Insert mode

在该模式下你键入类似打开普通编辑器(如记事本)的状态,在Normal mode中键入 iaos 等都可以进入该模式。在该模式下可以键入你想插入的字符,字符会被插入到当前文件缓存中。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- INSERT --

具体可参见 :help Insert-mode

Command-line mode/Cmdline mode

该模式下你可以在窗口底部键入一行文本,完成复杂的操作指令。从Normal mode进入该模式的方式,比如用于 Ex命令键入 : ,用于搜索键入 /? ,用于过滤内容键入 != ……

具体参见 :help Cmdline-mode

Ex mode

类似Command-line mode,在Normal mode中通过键入 QgQ 可以进入该模式。该模式下输入的命令和Command-line mode中的差不多,但是输入完一条命令之后,你会保持在Ex mode中继续输入其他命令,期间当前屏幕不会刷新,键入 vi 会退出该模式。

具体参见 :help Ex-mode

Vim的辅助模式

除了基本模式之外,Vim还有六个辅助模式,如下。

Operator-pending mode

该模式类似Normal Mode,但是在一个操作命令开始之后,Vim会等待一个 {motion} (移动),来指定操作对应的文本。

Replace mode

该模式是一种特殊的Insert mode,你可以进行和Insert mode一样的操作,但是不同的是每次你键入一个被插入的字符之时,插入之处原来所在的字符就会被替换成你键入的字符。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- REPLACE --

Virtual Replace mode

该模式类似Replace mode,不同的是它会替换屏幕当前的内容状态,在Normal mode中键入 gR 会进入该模式。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- VREPLACE --

Insert Normal mode

该模式类似Normal mode,在Insert mode下键入 <C-o> 可以进入该模式,该模式下执行一条Normal mode命令后,又会回到之前的Insert mode。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- (insert) --

Insert Visual mode

这个模式类似Visual mode,是在Insert mode中进入 Insert Normal mode后再键入 vV<C-v> ,该状态结束后,会回到Insert mode。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- (insert) VISUAL --

Insert Select mode

这个模式类似Select mode,是在Insert mode中进入 Insert Normal mode后再键入从Normal进入Select mode的命令,会进入该模式,该状态结束后,会回到Insert mode。设置 showmode 选项为 on 后,可以在窗口底部看到进入该模式的提示 -- (insert) SELECT --

最常见的模式及相关操作

前面介绍了Vim的多种模式,内容较多,为便于理解和继续,这里给出其中最常见的模式和相关操作。深入理解可在学习完本系列文章后再回顾。

内容是在输入模式下的功能。 本文剩余部分介绍的大部分都是指令模式的相关操作。

输入模式主要有如下的操作:

回到指令模式(Command mode):

输入: <Esc> .

输入内容:

输入: ...[你要输入的字符串]...

在这里,直接输入相应的字符即可。

临时切换到指令模式,执行完命令之后自动回到输入模式(Insert mode):

切换指令模式时输入: <C-o> .

回到输入模式时输入: <Esc>