Vim的三种模式
经过以上的使用演示,我们体验到了Vim编辑器的三种工作模式:
| 一般模式 (normal mode) |
一般模式用来浏览文本,查找内容,但是不可以编辑,在该模式下的键盘输入会被当成快捷键, 如复制粘贴等。打开Vim时,默认是工作在一般模式。 |
|---|---|
| 插入模式 (insert mode) |
插入模式下具有普通编辑器的功能,该模式下的键盘输入会被当成文本内容。 |
| 命令行模式(command-line mode) | 命令行模式支持保存、退出、替换等命令,以及Vim的高级功能。 |
我们在使用Vim时,常常会在这三种模式之间进行切换,切换方式可以参考下图。

上图的意义就是:
- 在任意模式下,我们可以通过按键“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的操作。
在终端中执行行下列命令:
vim hello_world.sh
| 1 | |
|---|---|
然后进入插入模式(在一般模式下按“i”键),输入下列代码后,保存文件并退出(退出插入模式,进入命令行模式后,输入wq并回车), 注意以下内容全为英文符号。
echo "helloworld,this is a script test!"
此脚本文件中的echo命令的作用是将其后面的文本内容直接输出到终端上。
Vim退出后回到终端,通过source命令运行刚刚编写的脚本文件:
source hello_world.sh
可以看到终端会输出“helloworld,this is a script test!”字样。
