第一部分:核心思想
在学习具体命令前,理解 vi 的核心工作模式至关重要。vi 不是一个像记事本那样的“所见即所得”编辑器,它有不同的模式,每个模式负责不同的操作。

三种核心模式:
-
普通模式
- 这是你进入
vi后的默认模式。 - 在这个模式下,你不能直接输入文字,所有的按键都被当作命令来执行(如
dd删除行,yy复制行,hjkl移动光标)。 - 从其他模式按
Esc键可以随时回到普通模式。
- 这是你进入
-
插入模式
- 这是真正用来输入文本的模式。
- 你可以通过在普通模式下输入某些命令(如
i,a,o)进入此模式。 - 进入后,屏幕左下角通常会显示
-- INSERT --或类似提示。 - 按
Esc键返回普通模式。
-
末行模式
(图片来源网络,侵删)- 用于执行保存、退出、搜索、替换等文件级别的操作。
- 在普通模式下输入 (冒号) 即可进入此模式,光标会跳转到屏幕最底部。
- 执行完命令后(如
wq),会自动返回普通模式。
一个简单的类比:
- 普通模式:就像是你手里拿着一把“瑞士军刀”,准备进行各种编辑操作。
- 插入模式:就像是你把“瑞士军刀”收起来,拿出笔来写字。
- 末行模式:就像是你走到文件柜前,准备给文件贴上标签(保存)或把它扔进垃圾桶(删除)。
第二部分:基本操作(生存指南)
假设你刚刚打开一个文件:vi my_file.txt
导航与移动 (在普通模式下)
| 命令 | 作用 | 备注 |
|---|---|---|
h |
光标向左移动一个字符 | |
j |
光标向下移动一行 | |
k |
光标向上移动一行 | |
l |
光标向右移动一个字符 | |
w |
光标移动到下一个单词的开头 | word |
e |
光标移动到当前单词的末尾 | end of word |
b |
光标移动到上一个单词的开头 | beginning of word |
0 (零) |
光标移动到当前行的开头 | |
| 光标移动到当前行的末尾 | ||
gg |
光标移动到文件的第一行 | |
G |
光标移动到文件的最后一行 | |
5G |
光标移动到文件的第 5 行 | |
Ctrl + f |
向前翻一页 | forward |
Ctrl + b |
向后翻一页 | backward |
进入插入模式 (在普通模式下)
| 命令 | 作用 | 备注 |
|---|---|---|
i |
在光标前进入插入模式 | insert |
a |
在光标后进入插入模式 | append |
o |
在当前行下方打开一个新行并进入插入模式 | open below |
O |
在当前行上方打开一个新行并进入插入模式 | open above |
I |
在当前行开头进入插入模式 | |
A |
在当前行末尾进入插入模式 |
删除、复制与粘贴 (在普通模式下)
| 命令 | 作用 | 备注 |
|---|---|---|
x |
删除光标所在处的字符 | |
dd |
删除(剪切)当前光标所在整行 | dd 可以和数字结合,如 3dd 删除 3 行 |
dw |
删除(剪切)一个单词 | dw 可以和数字结合,如 2dw 删除 2 个单词 |
yy |
复制当前光标所在整行到剪贴板 | yy 可以和数字结合,如 5yy 复制 5 行 |
p |
在光标后粘贴剪贴板内容 | put |
P |
在光标前粘贴剪贴板内容 | |
u |
撤销上一步操作 | undo |
Ctrl + r |
重做被撤销的操作 | redo |
查找与替换 (进入末行模式)
按 进入末行模式。
| 命令 | 作用 | 备注 |
|---|---|---|
/pattern |
从光标位置向下搜索 pattern |
按回车执行,按 n 跳到下一个,N 跳到上一个 |
?pattern |
从光标位置向上搜索 pattern |
按回车执行,按 n 跳到上一个,N 跳到下一个 |
%s/old/new/g |
全局替换,将文件中所有的 old 替换为 new |
s=substitute, =all lines, g=global |
%s/old/new/gc |
全局替换,但每次替换都会提示你确认 | c=confirm,非常安全,推荐使用 |
保存与退出 (进入末行模式)
按 进入末行模式。

| 命令 | 作用 | 备注 |
|---|---|---|
w |
保存文件 | write |
q |
退出 vi |
quit |
wq |
保存并退出 | write and quit |
q! |
不保存强制退出 | quit with force,当你不想保存修改时非常有用 |
w new_file.txt |
将当前文件另存为 new_file.txt |
|
wq! |
保存并强制退出(当文件没有写入权限时使用) |
第三部分:进阶技巧
可视化模式
允许你选中一块文本,然后对选中的文本进行操作(删除、复制等)。
| 进入方式 | 作用 | 操作示例 |
|---|---|---|
v |
字符可视化模式 | 从光标开始,按 hjkl 选中字符,按 d 删除,按 y 复制 |
V (大写) |
行可视化模式 | 自动选中当前整行,按 j 或 k 选中多行,按 d 删除,按 y 复制 |
Ctrl + v |
块可视化模式 | vi 最强大的功能之一!可以选中一个矩形区域的文本,常用于批量注释或编辑代码。 |
批量注释/取消注释 (块可视化模式示例)
假设你想注释 Python 代码中第 5 到 10 行的 符号:
- 按
5G跳到第 5 行。 - 按
Ctrl + v进入块可视化模式。 - 按
j5 次,选中第 5 到第 10 行(光标在第 10 行)。 - 按
Shift + i(大写 I),进入插入模式,光标会跳到所有选中行的开头。 - 输入 (井号加一个空格)。
- 按
Esc键,神奇的事情发生了!vi会在所有选中行的开头都插入 。
撤销与重做分支
vi 不仅可以撤销到上一步,还可以在不同的撤销历史之间切换。
| 命令 | 作用 |
|---|---|
u |
撤销 |
Ctrl + r |
重做 |
g- |
回到上一个撤销点 |
g+ |
回到下一个重做点 |
第四部分:总结与练习
核心流程总结
- 打开文件:
vi filename.txt - 进入普通模式:这是你的起点,如果不确定你在哪个模式,狂按
Esc准没错。 - 移动光标:使用
hjkl,w,b,0, 等命令。 - 编辑文本:
- 按
i,a,o进入插入模式,输入文字。 - 按
Esc回到普通模式。 - 使用
dd,yy,p,x等命令进行编辑。
- 按
- 保存退出:按 进入末行模式,输入
wq或q!。
如何练习?
最好的学习方式就是动手实践,你可以:
- 在终端输入
vi或vim,然后输入help。vim自带了非常详尽的帮助文档,你可以用q退出。 - 创建一个练习文件,
vi practice.txt。 - 尝试输入一段文字,然后尝试:
- 删除一个单词 (
dw)。 - 复制一行 (
yy),然后在另一行粘贴 (p)。 - 查找某个单词 (
/your_word)。 - 替换所有 "foo" 为 "bar" (
%s/foo/bar/gc)。 - 保存并退出 (
wq)。
- 删除一个单词 (
vi 的精髓在于普通模式,当你熟练掌握了普通模式下的各种命令后,你会发现文本编辑变得行云流水,效率远超鼠标点击,初学时感到困惑是正常的,坚持下去,你会爱上它的!
