Vim的三种模式

经过以上的使用演示,我们体验到了Vim编辑器的三种工作模式:

一般模式
(normal mode)
一般模式用来浏览文本,查找内容,但是不可以编辑,在该模式下的键盘输入会被当成快捷键, 如复制粘贴等。打开Vim时,默认是工作在一般模式。
插入模式
(insert mode)
插入模式下具有普通编辑器的功能,该模式下的键盘输入会被当成文本内容。
命令行模式(command-line mode) 命令行模式支持保存、退出、替换等命令,以及Vim的高级功能。

我们在使用Vim时,常常会在这三种模式之间进行切换,切换方式可以参考下图。

VIM_基本使用 - 图1
上图的意义就是:

  • 在任意模式下,我们可以通过按键“Esc”进入到一般模式。
  • 在一般模式下,通过按键“a” “i” “o” “O” “r” “R”等可进入到插入模式。
  • 在一般模式下,通过按键“:”可进入到命令行模式。

    插入模式

    Vim提供多个快捷键来从一般模式进入插入模式,见下表。进入插入模式之后,就可以正常地编辑文本了, 使用方向键来移动光标,回车键进行换行,操作方式与Windows记事本没有什么区别。
    表 进入/退出插入模式的快捷键
快捷键 功能描述
i 在当前光标所在位置插入文本
a 在当前光标所在位置的下一个字符插入文本
o 在光标所在位置后插入新行
r 替换当前光标所在位置的字符
R 可以替换当前光标所在位置之后的字符,按下“Esc”则退出
ESC 退出插入模式

一般模式

在任意模式下按按键“Esc”可进入到一般模式。下表列出了一般模式下常用的快捷键。在一般模式下,可以进行复制,粘贴,删除,查找替换某个关键字等。

表 一般模式快捷键

快捷键 功能描述
光标移动 k / ↑ 光标向上移动
j / ↓ 光标向下移动
h / ← 光标向左移动
l / → 光标向右移动
PageUp 向上翻页
PageDown 向下翻页
nG 跳转到第n行
文本查找与替换 /word 在文件中搜索关键字word
n 查找下一个关键字
N 查找上一个关键字
:1,$s/word1/word2/gc 将文本中的所有关键字word1用word2进行替换,需要用户进行确认。(使用:1,$s/word1/word2/g则直接全部替换)。这实际是运行在命令模式。
撤销重做 u 撤销上一步的操作,等价于Windows的Ctrl+Z
Ctrl+r 重做上一步的操作。
删除、剪切、复制、粘贴 d 删除光标所选的内容
dd 删除当前行
ndd 删除光标后n行
x 剪切光标选中的字符
y 复制光标所选的内容
yy 复制当前行
nyy 复制当前行后n行
p 将复制的数据粘贴在当前行的下一行
P 将复制的数据粘贴在当前行的上一行
区块操作 v 选择多个字符
V 可以选择多行
ctrl+v 可以选择多列

命令行模式

在一般命令模式下,按下键盘的冒号键“:”,就可以进入命令行模式,继续输入要执行的命令按回车即可执行。
表 命令行模式快捷键

快捷键 功能描述
w 保存文档
w 另存为以为文件名的文档
r 读取文件名为filename的文档
q 直接退出软件,前提是文档未做任何修改
q! 不保存修改,直接退出软件
wq 保存文档,并退出软件。
set nu 在行首加入行号
set nonu 不显示行号
set hlsearch 搜索结果高亮显示
! command 回到终端窗口,执行command命令,按回车键可切回vim。

用Vi/Vim软件编写简单的sh脚本

到此为止,Vim的基本操作就介绍完了,最后我们尝试用Vim编写一个输出hello world的脚本,熟悉Vim的操作。
在终端中执行行下列命令:

  1. vim hello_world.sh
1

然后进入插入模式(在一般模式下按“i”键),输入下列代码后,保存文件并退出(退出插入模式,进入命令行模式后,输入wq并回车), 注意以下内容全为英文符号。

  1. echo "helloworld,this is a script test!"

此脚本文件中的echo命令的作用是将其后面的文本内容直接输出到终端上。
VIM_基本使用 - 图2
Vim退出后回到终端,通过source命令运行刚刚编写的脚本文件:

  1. source hello_world.sh

可以看到终端会输出“helloworld,this is a script test!”字样。
VIM_基本使用 - 图3