vi —— 终端中的编辑器
Content
- 打开和新建文件
- 三种工作模式
- 常用命令
- 分屏命令
- 常用命令速查图
01. 打开和新建文件
- 在终端中输入 vi 在后面跟上文件名 即可
$ vi 文件名
- 如果文件已经存在,会直接打开该文件
- 如果文件不存在,会新建一个文件
1.1 打开文件并且定位行
$ vi 文件名 +行数
- 注:如果只带上 + 而不指定行号,会直接定位到文件末尾
1.2 异常处理
- 如果 vi 异常退出,在磁盘上可能会保存有 交换文件
- 下次再使用 vi 编辑该文件时,会看到以下屏幕信息,按下字母 d 可以 删除交换文件 即可
02. 三种工作模式
vi 有三种基本工作模式:
- 命令模式
- 打开文件首先进入命令模式,是使用 vi 的 入口
- 通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除
- 末行模式 —— 执行 保存、退出 等操作
- 要退出 vi 返回到控制台,需要在末行模式下输入命令
- 末行模式 是 vi 的 出口
- 编辑模式 —— 正常的编辑文字
- 提示:在 Touch Bar 的 Mac 电脑上 ,按 ESC 不方便,可以使用 CTRL + [ 替代
末行模式命令
- 按下
shift + :
进入
命令 | 功能 |
---|---|
w | 保存 |
q | 退出,如果没有保存,不允许退出 |
q! | 强行退出,不保存退出 |
wq | 保存退出 |
x | 等同wq |
03. 常用命令
3.1 移动(基本)
1) 上、下、左、右
命令 | 功能 | 手指 |
---|---|---|
H | 向左 | 食指 |
J | 向下 | 食指 |
K | 向上 | 中指 |
L | 向右 | 无名指 |
- 手指倒也无所谓,舒服就行
2) 行内移动
命令 | 功能 |
---|---|
w | 向后移动一个单词 |
b | 向前移动一个单词 |
0 | 行首 |
^ | 第一个不是空白字符的位置 |
& | 行尾 |
3) 行数移动
命令 | 功能 |
---|---|
gg | 文件顶部 |
G | 文件末尾 |
Num gg | 移动到 Num 行 |
Num G | 移动到 Num 行 |
: Num | 移动到 Num 行 |
4) 屏幕移动
命令 | 功能 |
---|---|
Ctrl + b | 向上翻页 |
Ctrl + f | 向下翻页 |
H | 屏幕顶部 |
M | 屏幕中间 |
L | 屏幕底部 |
3.2 移动(程序)
1) 段落移动
- vi 中使用空行来区分段落
- 在程序开发时,通常 一段功能相关的代码会写在一起 —— 之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
2) 括号切换
- 在程序世界中,()、[]、{} 使用频率很高,而且都是成对出现的, 使用%快速匹配
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
3) 标记
- 如某一块代码可能需要稍后处理,例如:编辑、查看,此时先使用 m 增加一个标记,这样可以 在需要时快速地跳转回来 或者 执行其他编辑操作
- 标记名称 可以是 a~z 或者 A~Z 之间的任意 一个 字母
- 添加了标记的 行如果被删除,标记同时被删除
- 如果 在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
命令 | 功能 |
---|---|
mx | 添加标记 x,x 是 a~z 或者 A~Z 之间的任意一个字母 |
'x | 直接定位到标记 x 所在位置 |
3.3 选中文本(可视模式)
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
- 按 ESC 可以放弃选中,返回到 命令模式
- 可以和 移动命令 连用,例如:ggVG 能够选中所有内容
3.4 撤销和恢复撤销
命令 | 功能 |
---|---|
u | 撤销上次命令 |
Ctrl + r | 回复撤销的命令 |
3.5 删除文本
命令 | 功能 |
---|---|
x | 删除光标所在字符,或者选中文字 |
d(移动命令) | 删除移动命令对应的内容 |
dd | 删除光标所在行 |
D | 删除至行尾 |
注:如果使用 可视模式 已经选中了一段文本,那么无论使用 d 还是 x,都可以删除选中文本
- 删除命令可以和 移动命令 连用,以下是常见的组合命令:
- dw - 从光标位置删除到单词末尾
- d0 - 从光标位置删除到一行的起始位置
- d} - 从光标位置删除到段落结尾
- ndd - 从光标位置向下连续删除 n 行
- d代码行G - 从光标所在行 删除到 指定代码行 之间的所有代码
- d’a - 从光标所在行 删除到 标记a 之间的所有代码
3.6 复制、粘贴
- vi 中提供有一个 被复制文本的缓冲区
- 复制 命令会将选中的文字保存在缓冲区
- 删除 命令删除的文字会被保存在缓冲区
命令 | 功能 |
---|---|
y(移动命令) | 复制 |
yy | 复制一行 |
p | 粘贴 |
提示
- 命令 d、x 类似于剪切操作 —— CTRL + X
- vi 中的 文本缓冲区只有一个,如果后续做过 复制、剪切 操作,之前缓冲区中的内容会被替换
注意
- vi 中的 文本缓个冲区 和系统的 剪贴板 不是同一个
- 所以在其他软件中使用 CTRL + C 复制的内容,不能在 vi 中通过 P 命令粘贴,可以在 编辑模式 下使用 鼠标右键粘贴
3.7 替换
命令 | 功能 | 工作模式 |
---|---|---|
r | 替换当前字符 | 命令模式 |
R | 替换当前行光标前后的字符 | 替换模式 |
- R 命令可以进入 替换模式,替换完成后,按下 ESC 可以回到 命令模式
- 替换命令 的作用就是不用进入 编辑模式,对文件进行 轻量级的修改
3.8 缩排和重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
- 缩排命令 在开发程序时,统一增加代码的缩进 比较有用!
- 一次性 在选中代码前增加 4 个空格,就叫做 增加缩进
- 一次性 在选中代码前删除 4 个空格,就叫做 减少缩进
- 在 可视模式 下,缩排命令只需要使用 一个 > 或者 <
在程序中,缩进 通常用来表示代码的归属关系
前面空格越少,代码的级别越高
前面空格越多,代码的级别越低
3.9 查找
1)常规查找
命令 | 功能 |
---|---|
/str | 查找str |
- 查找到指定内容之后,使用 Next 查找下一个出现的位置:
- n: 查找下一个
- N: 查找上一个
- 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可
2)单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
3.10 查找并替换
- 在 vi 中查找和替换命令需要在 末行模式 下执行
- 记忆命令格式:
:%s/ / /g
1) 全局替换
- 一次性替换文件中的 所有出现的旧文本
- 命令格式如下:
:%s/旧文本/新文本/g
2) 可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下:
:s/旧文本/新文本/g
3) 确认替换
- 如果把末尾的 g 改成 gc ,那在替换的时候会逐个要求选择操作,建议使用这种替换
:%s/旧文本/新文本/gc
- 相关操作:
- y - yes 替换
- n - no 不替换
- a - all 替换所有
- q - quit 退出替换
- l - last 最后一个,并把光标移动到行首
- ^E 向下滚屏
- ^Y 向上滚屏
3.11 插入命令
- 在 vi 中除了常用的 i 进入 编辑模式 外,还提供了以下命令同样可以进入编辑模式:
命令 | 功能 |
---|---|
i | 在当前字符前插入文本 |
I | 在行首插入文本 |
a | 在当前字符后添加文本 |
A | 在行末添加文本 |
o | 在当前行后面插入一空行 |
O | 当前行前面插入一空行 |
04. 分屏命令
4.1 末行命令扩展
末行命令 主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
命令 | 功能 |
---|---|
:e . | 会打开内置的文件浏览器,浏览要当前目录下的文件 |
:n 文件名 | 新建文件 |
:w 文件名 | 另存为,但是仍然编辑当前文件,并不会切换文件 |
- 注:切换文件之前,应该保证当前这个文件已经被保存
- 可以使用 w 命令保存 阶段性的备份代码
4.2 分屏命令
- 使用 分屏命令,可以 同时编辑和查看多个文件
命令 | 功能 |
---|---|
:sp [文件名] | 横向增加分屏 |
:vsp [文件名] | 纵向增加分屏 |
1) 切换分屏窗口
- 分屏窗口都是基于 CTRL + W 这个快捷键的
命令 | 功能 |
---|---|
w | 切换到下一个窗口 |
r | 互换窗口 |
c | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | 退出当前窗口,如果是最后一个窗口,则关闭 vi |
o | 关闭其他窗口 |
2) 调整窗口大小
命令 | 功能 |
---|---|
+ | 增加窗口高度 |
- | 减少窗口高度 |
> | 增加窗口宽度 |
< | 减少窗口宽度 |
= | 等分窗口大小 |
- 调整窗口宽高的命令可以和数字连用,例如:5 CTRL + W + 连续 5 次增加高度
05. 常用命令速查图
vimrc
- vimrc 是 vim 的配置文件,可以设置 vim 的配置,包括:热键、配色、语法高亮、插件 等
- Linux 中 vimrc 有两个位置,家目录下的配置文件优先级更高
- /etc/vim/vimrc
- ~/.vimrc