- 所有的Linux distributions都会内置vi文本编辑器
- 很多软件的编辑接口都会主动调用vi文本编辑器
- vim可以看做vi的高级版本,有程序编辑能力,强大好用
一、Vim的三种模式
- 命令模式:控制光标移动,对文本进行复制、粘贴、删除和查找
- 末行模式:保存或退出文件,以及其他的一些功能
- 插入模式:编辑文本内容
二、三种模式的切换和使用

Vim编辑器模式切换示意图
Note:
- 当运行vim编辑器时,默认进入命令模式
- 插入模式和末行模式之间不能直接切换
- 按下
a、i、o等键时,进入插入模式- 按下
:等键时,进入末行模式- 按下
Esc键回到命令模式
2.1 命令模式说明
| 按键 | 作用 |
|---|---|
| dd | 删除(剪切)光标所在行 |
| ndd | 删除(剪切)从光标处开始的n行 |
| yy | 复制光标所在行 |
| nyy | 复制从光标处开始的n行 |
| p | 粘贴(将删除或复制的数据粘贴到光标下一行) |
| P | 粘贴(将删除或复制的数据粘贴到光标上一行) |
| u | 撤销(后退) |
| [Ctrl] + r | 重做上一个操作(前进) |
2.2 进入插入模式的说明
| 按键 | 作用 |
|---|---|
| i/I | 进入插入模式: i: 从当前光标插入 I: 从当前所在行的第一个非空格符处插入(即从开头插入) |
| a/A | 进入插入模式: a: 从当前光标的下一个字符处插入 A: 从当前所在行的最后一个字符处插入(即从行末尾插入) |
| o/O | 进入插入模式: o: 从当前光标的下一行插入新的一行 O: 从当前光标的上一行插入新的一行 |
| r/R | 进入替换模式: r: 替换光标所在的字符 R: 一直替换光标所在的字符,直到按下[Esc]键为止 |
Note:
界面左下角出现--INSERT--或--REPLACE--字样
2.3 末行模式的说明
2.3.1 常用命令
| 按键 | 作用 |
|---|---|
| :w | 将编辑的数据从内存写入硬盘 |
| :w! | 若文件属性为只读,强制写入 |
| :q | 退出vim环境 |
| :q! | 强制退出,且不保存文件 |
| :wq! | 强制保存并退出 |
| :set nu | 显示行号 |
| :set nonu | 不显示行号 |
| :n | 光标移动到第n行 |
2.3.2 替换命令
| 按键 | 作用 |
|---|---|
| :s/word1/word2 | 将当前光标所在行的第一个word1替换为word2 |
| :s/word1/word2/g | 将当前光标所在行的所有word1替换为word2 |
| :%s/word1/word2 | 将全文中每一行的第一个word1替换为word2 |
| :%s/word1/word2/g | 将全文中所有的word1替换为word2 |
| :n,ms/word1/word2/g | 将n行到m行的所有word1替换为word2 |
| :.,$s/word1/word2/gc | 将光标所在行到最后一行的所有word1替换为word2 注意:替换前需要用户进行确认是否替换 |
2.3.3 查找命令
| 按键 | 作用 |
|---|---|
| /word | 在文本中从上至下搜索word |
| ?word | 在文本中从下至上搜索word |
| n | 重复前一个查找操作 |
| N | 反向进行前一个查找操作 |
三、块选择
| 按键 | 作用 |
|---|---|
| [Ctrl] + v | 块选择,用矩形的方式选择数据 |
| v | 字符选择,将光标经过的地方反白 |
| V | 行选择,将光标经过的行反白 |
| y | 复制反白的数据 |
| d | 删除反白的数据 |
Note:
界面左下角出现--VISUAL BLOCK--或--VISUAL--或--VISUAL LINE--字样
四、多文件编辑
同时打开多个文件,如: vim hosts man.config
| 按键 | 作用 |
|---|---|
| :n | 编辑下一个文件 |
| :N | 编辑上一个文件 |
| :first | 打开第一个文件 |
| :last | 打开最后一个文件 |
| :files | 列出目前vim打开的所有文件 |
五、多窗口功能
| 按键 | 作用 |
|---|---|
| :sp filename | 打开一个新窗口 有filename: 打开一个新文件 无filename: 两个窗口为同一个文件内容(同步显示) |
| [Ctrl] + w + ⬇ | 光标移动到下方的窗口 |
| [Ctrl] + w + ⬆ | 光标移动到上方的窗口 |