本篇主要梳理一下如何使用Vim编辑器来编写、修改文档,以及对这个工具的使用,从而能更深入地理解此编辑器的命令和模式切换。

Vim编辑器的使用

Vim编辑器有三种模式:命令模式、输入模式、末行模式。每种模式都分别支持多种不同的命令快捷键, 这三种模式间的区别如下:

  • 命令模式

用户启动后默认进入命令模式。此状态下,输入会被当作是命令而非输入字符,有些命令会直接执行,有些命令会切换编辑器的模式。比如,在输入i会切换到输入模式,输入:会切换到末行模式,输入x会删除当前光标所在处的字符。命令模式中,最常用的一些命令列表如下:

命令模式下的命令 说明
dd 删除(剪切)光标所在的整行
5dd 删除(剪切)光标处开始的5行
yy 复制光标所在的整行
5yy 复制从光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

命令模式只有一些最基本的命令,仍要依赖末行模式输入更多的命令。

  • 输入模式

在命令模式下,按i就进入了输入模式。此模式下可以正常的文本输入,和我们在其它文本中输入完全一样。按Insert键,可以切换光标为输入/替换模式,按ESC键,则退出输入模式,切换到命令模式。

  • 末行模式

末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。在命令模式下,按下:即可以进入末行模式,按ESC键,可退出末行模式,切换到命令模式。末行模式的常用命令列表如下:

末行模式下的命令 说明
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行此命令
:整数 跳转至此行
:s /one/two 将当前光标所在的第一个one替换成two
:s /one/two/g 将当前光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索此字符串
/字符串 在文本中从上至下搜索此字符串

Vim编辑器是在三种模式间切换的,每次启动时默认是在命令模式,此时要切换到输入模式后再进行文档的编写工作,而每次在编写完文档后要回到命令模式,再进入末行模式执行文档的保存或退出工作。在Vim中,是无法直接从输入模式切换到末行模式的。其工作模式的流程图可表示成如下形式:
a.jpg

下面以一个实例来说明如何使用Vim编辑器。输入vi linux.txt,将进入命令模式,若linux.txt文件存在,则打开这个文件,若不存在则创建一个临时的输入文件。此时,可以切换到编辑模式,可以用a、i、o三个键切换到输入模式,这三种方式表示的意义如下:

  • a:切换到输入模式后,在光标后面一位开始输入;
  • i:切换到输入模式后,在光标当前位置开始输入;
  • o:切换到输入模式后,在光标下面创建一个空行开始输入;

编辑完成后,可以按ESC键,返回命令模式,再输入:wq保存并退出文档,非常简单。

Vim的键盘如下图所示,可以根据这个键盘图快速熟悉相关的操作。
b.jpg