【Linux 基础】vi 编辑器
编辑器
vi 是一个命令,也是一个命令行下的编辑器,它有如下功能:
- 打开文件、新建文件、保存文件
- 光标移动
- 文本编辑
-(多行间|多列间)复制、粘贴、删除- 查看和替换
1. 模式
vi 编辑器有三种模式,各个模式侧重点不一样:
a) 一般模式(光标移动、复制、粘贴、删除)
b) 编辑模式(编辑文本)
c) 命令行模式(查找和替换)
vi 编辑器的三种模式间切换如下图所示:
注意
- 当不知道处于何种模式时,按 ESC 键返回到一般模式。
- wq (write quit)
- i (insert)
2. 文件的打开/新建/保存
打开文件、新建文件,命令如下(如果文件存在则打开文件,否则新建文件并打开):
$ vi 文件名
修改结束之后,输入“:” 进入命令行模式,再输入“wq”保存退出:
:wq --> 保存并退出文件
注意
在编辑完成时,返回一般模式,方法如下:
命令 | 描述 |
---|---|
x | 保存当前文档并且退出 |
q | 退出 |
w | 保存文档 |
wq | 保存退出 |
q! | 强制退出 |
vi编辑器的:x和:wq的区别
“:x"命令更注重于文件是否被修改的确认,而”:wq"命令则更注重于保存操作的强制进行。
如果你只想在有修改时才保存并退出,可以使用":x"命令;
如果你想无论是否有修改都进行保存并退出,可以使用":wq"命令。
3. 编辑文件
打开文件后,默认处于“一般模式”,这时可以输入以下字母:
命令 | 描述 |
---|---|
i | 在当前光标所在字符的前面,转为编辑模式 |
I | 在当前光标所在行的行首转换为编辑模式 |
a | 在当前光标所在字符的后面,转为编辑模式 |
A | 在光标所在行的行尾,转换为编辑模式 |
o | 在当前光标所在行的下方,新建一行,并转为编辑模式 |
O | 在当前光标所在行的上方,新建一行,并转为编辑模式 |
4. 快速移动光标
在一般模式下,可以使用下面快捷键移动光标:
命令 | 描述 |
---|---|
h (或左方向键) | 光标左移一个字符 |
l (或右方向键) | 光标右移一个字符 |
j (或下方向键) | 光标下移一行 |
k (或上方向键) | 光标上移一行 |
nG 或 ngg | 光标移动到第 n 行首 |
n+ | 光标下移 n 行 |
n- | 光标上移 n 行 |
在一般模式下,可以使用下面快捷键翻页:
命令 | 描述 |
---|---|
Ctrl + f | 屏幕向下翻一页,相当于下一页 |
Ctrl + b | 屏幕向上翻一页,相当于上一页 |
详细介绍如下:
① 快速的定位到某一行:文件头、文件尾、指定某一行
⚫ gg:就跳到第一行的行首,就是文件头
⚫ 2gg:就跳到第二行的行首
⚫ G:转至文件结尾
② 在某一行如何快速定位到某一列:
⚫ 0:(数字零)光标移至当前行行首
⚫ $:光标移至当前行行末
⚫ fx:搜索当前行中下一个出现字母 x 的地方
5. 文本复制/粘贴/删除/撤销
在一般模式下,可以执行以下命令:
命令 | 描述 |
---|---|
cc | 删除整行,并且修改整行内容 |
dd | 删除该行,不提供修改功能 |
ndd | 删除当前行及其后的 n-1 行 |
dw | 删除光标所在的单词 del word |
D | 删除光标之后的内容 |
x | 删除光标所在的字符 |
X | 删除光标前面的一个字符 |
yy | 复制当前行 |
nyy | 复制当前行及其下面 n-1 行 |
p | 粘贴最近复制的内容 |
s | 删除光标所在字符 |
r | 替换光标处字符 |
u | 撤销上一步操作 |
【注意】
(1) 在vi编辑器中,"cc"和"dd"都是用于编辑文本的命令,但它们之间有不同的功能和效果:
- "cc"命令:该命令用于删除当前行并进入插入模式,可以用于替换整行文本。当你在普通模式下输入"cc"命令后,当前行的内容将被删除,并进入插入模式,你可以输入新的文本来替换该行。
- "dd"命令:该命令用于删除当前行。当你在普通模式下输入"dd"命令后,当前行将被删除,并且被删除的文本将被保存在剪切板中,可以用于粘贴到其他位置 (相当于剪切 Ctrl + z)。
总结来说:"cc"用于替换整行文本,而"dd"用于删除整行文本。
(2) 在vi编辑器中,"x"和"s"是两个不同的命令,具有不同的功能和效果:
- "x"命令:该命令用于删除光标所在位置的字符。当你在普通模式下按下"x"键时,光标所在位置的字符将被删除。
- "s"命令:该命令用于替换光标所在位置的字符。当你在普通模式下按下"s"键时,光标所在位置的字符将被删除,并进入插入模式,你可以输入新的字符来替换被删除的字符。
总结来说:"x"命令用于删除字符,而"s"命令用于替换字符。
6. 文本查找和替换
在一般模式下,可以执行以下命令:
a) 查找
/pattern //从光标开始处向文件尾搜索 pattern
,后按下 n 或 N
注意
:
n:在同一个方向重复上一次搜索命令
N:在反方向重复上一次搜索命令
在/pattern 之前先跳到第一行则进行全文件搜索。
b) 替换
:%s/p1/p2/g //将文件中所有的 p1 均用 p2 替换
:%s/p1/p2/gc //替换时需要确认
“s“ 全称:substitute 替换;
“g“ 全称:global 全局;
“c“ 全称:confirm,确认