01.新建&打开文件
02.三种工作模式

注意:在正常开发时,进入编辑模式前,不要按数字,否则重复
命令行模式
命令 | 字母含义 | 功能 |
---|
w | write | 只保存,不退出 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | !表示强制 | 强行退出,不保存退出 |
x | 与wq是等价模式,精简成一个字母 | 保存并且退出 |
03.常用命令
- 重复次数
在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数。比如输入6x
可以直接删除printf
- 移动和选择
- 编辑操作
- 撤销和重复
- 查找替换
- 编辑
3.1 移动(基本)
- 1)上下左右

- 2)行内移动
命令 | 英文 | 功能 |
---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | | 移动到行首 |
^ | | 移动到行首第一个不是空白字符的位置 |
$ | | 移动到行尾 |
命令 | 英文 | 功能 |
---|
gg | go | 移动到文件顶部 |
G | go | 移动到文件末尾 |
数字G | go | 移动到数字对应的行数 |
命令 | 英文 | 功能 |
---|
Ctrl+b | back | 向上翻页 |
Ctrl+f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
3.2 移动(程序)
命令 | 英文 | 功能 |
---|
m字母 | mark | 添加标记大小写任意的字母 |
'字母 | | 直接定位到标记上面字母所在位置 |
3.3 选中文本(可视模式)
命令 | 模式 | 英文 | 功能 |
---|
v | 可视模式 | visual | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | visual | 选中光标经过的完整行 |
Ctrl+v | 可视块模式 | visual | 垂直方向选中文本 |
注:可视模式下,可以和移动命令连用,例如:ggvG
能够选中所有内容
3.4 撤销和恢复撤销
命令 | 英文 | 功能 |
---|
u | undo | 撤销上次的命令 |
Ctrl+r | redo | 恢复撤销的命令 |
3.5 删除文本
命令 | 英文 | 功能 |
---|
x | cut | 删除光标所在字符,或者选中文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行,可以ndd删除n行 |
D | delete | 删除至行尾 |
- 删除命令可以和移动命令连用,以下是常见的组合命令:
dw //从光标位置删除到单词末尾
d0 //从光标位置删除到一行的起始位置
d} //从光标位置删除到段落结尾
ndd //从光标位置向下连续删除n行
d行号G //从光标所在行删除到指定行号之间的所有代码
d'a //从光标所在行删除到标记a之间的所有代码
3.6 复制、粘贴
命令 | 英文 | 功能 |
---|
y(移动命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行 |
p | paste | 粘贴 |
注意
- vi中的文本缓冲区只有一个,和系统中的剪切板不是同一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换
- 所以在其他软件中使用
Ctrl+C
复制的内容,不能再vi中通过p
命令粘贴,可以在编辑模式下使用鼠标右键粘贴 - 命令
d
、x
相当于图形界面中的Ctrl+x
3.7 替换
命令 | 英文 | 功能 | 工作模式 |
---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前光标后的字符 | 替换模式 |
3.8 缩排和重复执行【常用】
命令 | 功能 |
---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
注:在可视模式下,缩排命令只需要是使用一个>
或者<
3.9 查找
查找到指定内容之后,使用Next查找下一个出现的位置:
n:查找下一个
N:查找上一个
命令 | 功能 |
---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
3.10 查找并替换
:%s/旧文本/新文本/g
:s/旧文本/新文本/g
:%s/旧文本/新文本/gc
注:c表示confirm
1.y
-yes
替换
2.n
-no
不替换
3.a
-all
替换所有
4.q
-quit
退出替换
3.11 插入命令
命令 | 英文 | 功能 | 频率 |
---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
o | | 在当前行后面插入一空行,光标定位在行首 | 常用 |
O | | 在当前行后面插入一空行,光标定位在行尾 | 常用 |
a | append(追加) | 在当前字符后添加文本 | 少用 |
A | append | 在行末添加文本 | 较常用 |
04.分屏命令
4.1 末行命令扩展
命令 | 英文 | 功能 |
---|
:e 文件名(可以输入前几个字母然后按Tab键会自动补全) | edit | 打开对应文件 |
:e . | .在linux中表示当前目录 | 会打开内置的文件浏览器,浏览当前目录下的文件 |
:n 文件名 | new | 新建文件 |
:w 文件名 | write | 另存为,但是仍然编辑当前文件,并不会切换文件,用来阶段性备份代码 |
提示:
- 在linux空格多用于将命令与文件名隔开
- 切换文件之前,必须保证当前这个文件已经被保存
4.2 分屏命令(有用)
命令 | 英文 | 功能 |
---|
:sp | split(分开) | 横向增加分屏,同一个文件 |
:sp 文件名 | split | 横向增加分屏,本文件和想要打开的文件 |
:sp . | .在linux中表示当前目录 | 横向增加分屏,本文件和在目录中选择的文件 |
:vsp | vertical split | 纵向增加分屏 |
- 切换分屏窗口,要先
Ctrl+w
(w对应的单词是window
),再输入以下命令
命令 | 英文 | 功能 |
---|
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则关闭vi |
o | other | 关闭其他窗口 |
补充:
1、添加多行注释:
1、esc进入命令行模式;
2、Ctrl+v切换到块选择模式,然后移动光标选择要注释的多行;
3、按 大写I 插入,输入注释符号(eg. C/C++中输入
需要注意,按大写I 插入。
取消注释:
1、esc进入命令行模式;
2、Ctril+v切换到块选择模式,然后移动光标选择要取消注释的多行;
3、按x键取消注释。
2、批量行缩进和缩回
方法一:通过可视模式实现
1、命令模式下按V(可视模式)或Shift+V(可视行模式)打开可视模式
2、按J或K选中需要缩进的行
3、按Shift>缩进一个tab
4、按Shift<缩回一个tab
方法二:末行模式实现
1、末行模式输入 行号1,行号2> 后回车
2、如 :5,10> 则5到10行缩进一个tab
3、末行模式输入 行号1,行号2< 后回车
4、如 :5,10< 则5到10行缩回一个tab