vi编译器的使用

打开和新建文件

vi 文件名
如果文件已经存在,直接打开该文件
如果文件不存在,会新建一个文件

打开文件并且定位行

vi 文件名 +行数
例如:在开发时,知道某行代码出错,可以直接定位到出错代码位置
vi 文件名 +
直接定位到文件尾

交换文件

在vi编辑的过程中,如果强行关闭shell,会产生交换文件,可以使用ls -a查询,再次进入vi时,可以使用D删除交换文件,但是之前的编辑会全部丢失。

工作模式

1.命令模式
打开文件首先进入命令模式
通过命令对文件进行常规编程操作。例如:定位、翻页、复制、粘贴等
在其他图形编译器下,通过快捷键或鼠标实现的操作,都在命令模式下实现
2.末行模式–执行保存、退出等操作
要退出vi返回到控制台,需要再末行模式下输入命令
末行模式是vi的出口

在这里插入图片描述

末行模式命令

命令 英文 功能
w write 保存
q quit 退出,如果没有保存,不允许退出
q! quit 强行退出,不保存退出
wq write&quit 保存并退出
x 保存并退出

常用命令

注意:输入命令时,要确保退出中文输入法

1.重复次数
在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数

2.移动
(1)上、下、左、右

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

(2)行内移动

命令 英文 功能
w word 向后移动一个单词
b back 向前移动一个单词
0 行首
^ 行首。第一个不是空白字符的位置
$ 行尾

(3)行数移动

命令 英文 功能
gg go 文件顶部
G go 文件末尾
数字gg go 移动到数字对应的行数
数字G go 移动到数字对应的行数
:数字 移动到数字对应的行数

(4)屏幕移动

命令 英文 功能
Ctrl+b back 向上翻页
Ctrl+f forward 向下翻页
H Head 屏幕顶部
M Middle 屏幕中间
L Low 屏幕底部

(5)段落移动
vi中使用空行来区分段落
在程序开发时,通常一段功能相关的代码会写到一起

命令 功能
{ 上一段
} 下一段

(6)括号切换
在程序世界中,()、【】、{}使用频率较高,而且成对出现

命令 功能
% 括号匹配切换

(7)标记
在开发时,某一块代码可能需要稍后处理。例如:编辑、查看
此时先使用m增加一个标记,这样可以在需要的时候快速回来。
标记名称可以是a~z或者A ~ Z
添加标记的行删除,则标记也同样删除,其他行使用相同的字母做标记,则之前添加的标记也会被替换掉

命令 英文 功能
mx mark 添加标记x
'x 直接到x位置

(8)选中文本
vi提供三种可视模式,可以方便程序员选择选中文本的方式
按ESC可以放弃选中,返回到命令模式

命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl+v 可视块模块 垂直方向选中文本

例如:ggVG能够选中所有内容

(9)撤销和恢复撤销

命令 英文 功能
u undo 撤销上次命令
Ctrl+r redo 恢复撤销的命令

(10)删除文本

命令 英文 功能
x cut 删除光标所在字符,或者删除选中的文字
d(移动命令) delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd删除多行
D delete 删除到行尾

d和x实质上就是剪切操作

(11)复制、粘贴

命令 英文 功能
y(移动命令) copy 复制
yy copy 复制一行,可以nyy复制多行
p paste 粘贴

提示
vi中的文本缓冲区和系统的剪切板不是同一个
所以在其他软件使用Ctrl+C复制的内容,不能在vi通过p进行粘贴
可以在编辑模式下使用鼠标右键粘贴

(12)替换

命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 替换当前行光标后的字符 替换模式

替换模式可以通过ESC回到命令模式

(13)缩进和重复执行

命令 功能
>> 向右增加缩进
<< 向左增加缩进
. 重复上次命令

(14)查找
常规查找

命令 功能
/str 查找str

查找到指定的内容后,使用NEXT找到下一个出现的位置
n:查找下一个
N:查找上一个
如果不想看到高亮显示,可以随便查找一个不存在的内容

单词快速匹配

命令 功能
* 向后查找当前光标所在单词
# 向前寻找当前光标所在单词

(15)查找并替换
在vi中查找和替换命令需要在末行模式下执行
格式: :%s///g|
1)全局替换
:%s/旧文本/新文本/g

2)可视区域替换
先选中要替换文字的范围
然后再输入命令

3)确认替换
如果把末尾的g改成gc,在替换的时候,会有提示!推荐使用。
:%s/旧文本/新文本/gc
1.y * yes 替换
2.n * no 不替换
3.a * all 替换所有
4.q * quit 退出替换

(16)插入命令

命令 英文 功能 常用
i insert 在当前字符前插入文本 常用
I insert 在行首插入文本 较常用
a append 在当前字符后插入文本
A append 在行末添加文本 较常用
o 在当前行后面插入一空行 常用
O 在当前行前面插入一空行 常用

在这里插入图片描述
(17)编辑命令和数字连用
在开发中,可能会遇到连续输入N个同样的字符
**例如:*连续的10个星号 *********
要实现这个效果可以在命令模式下
1.输入10,表示要重复10次
2.输入i:进入编程模式
3.输入

4.按下ESC即可

(18)利用可视化给多段代码增加注释
在开发中,可能会遇到一次性给多行代码前增加#
要实现这个效果可以在命令模式下
1.移动到要增加注释的第一行代码,按^来到行首
2.按Ctrl+v进入可视化模式
3.选中代码区
4.输入I进入编程模式。注意:一定要使用I
5输入#并且ESC退出即可

(19)末行命令扩展
末行命令主要是针对文件进行操作的:保存、退出、搜索&替换、另存、新建、浏览文件

命令 英文 功能
e . edit 会打开内置的文件浏览器,浏览当前目录下的文件
n 文件名 new 新建文件
w 文件名 write 另存为、但是仍然编辑当前文件,并不会切换文件

e 文件名: 会直接切换到该文件
w 文件名 可以用来进行代码备份

(20)分屏命令
使用分屏命令,可以同时编辑和查看多个文件

命令 英文 功能
sp[文件名] split 横向增加分屏
vsp[文件名] vertical split 纵向增加分屏

1)切换分屏窗口
分屏窗口都是基于Ctrl+w这个快捷按键,w指的是window

命令 英文 功能
w window 切换到下一个窗口
r reverse 互换窗口
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,但是如果是最后一个窗口,则光闭vi
o ther关闭其他窗口