[命令] Linux 命令 test (比较数值、文件、目录、链接、块、特殊文件、字符串)

内容一:test 比较符号

1.1 test 数值比较符号

1) -eq 或者 ==,若两个数值存在且相等,则结果为真
2) -ne 或者 !=,若两个数值存在且不相等,则结果为真
3) -gt 或者 >,若两个数值存在且前一个数值大于后一个数值,则结果为真
4) -lt 或者 <,若两个数值存在且前一个数值小于后一个数值,则结果为真
5) -ge 或者 >=,若两个数值存在且前一个数值大于或等于后一个数值,则结果为真
6) -le 或者 <=,若两个数值存在且前一个数值小于或等于后一个数值,则结果为真

1.2 test 字符串比较符号

1) -z,如果字符串为空值,则结果为真
2) -n,如果字符串不为空值,则结果为真
3) == 或者 =,若两个字符串存在且一样,则结果为真
4) !=,若两个字符串存在且不一样,则结果为真
5) >,若两个字符串存在且前一个字符串大于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
6) <,若两个字符串存在且前一个字符串小于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真

1.3 test 文件、目录、链接、块、特殊文件比较符号

1) -e,若文件或目录或链接存在,则结果为真
2) -d,若目录存在,则结果为真
3) -f,若文件存在,则结果为真
4) -L,若链接存在,则结果为真
5) -b,若块文件存在,则结果为真
6) -c,若字符型特殊文件存在,则结果为真
7) -s,若文件存在且里面有内容,则结果为真
8) -r,若文件且可读,则结果为真
9) -w,若文件且可写,则结果为真
10) -x,若文件且可执行,则结果为真
11) -nt,若两个文件存在且前一个文件比后一个文件新,则结果为真
12) -ot,若两个文件存在且前一个文件比后一个文件新,则结果为真

内容二:test 的数值比较案例

2.1 案例一:对整数进行比较

# test 0 -ne 1
# echo $?
0

(补充:这里以测试数字 0 是否不等于数字 1 为例)

2.2 案例二:对字符串进行比较

# test a == a
# echo $?
0

(补充:这里以测试字符串 a 是否等于字符串 a 为例)

2.3 案例三:对文件进行比较

# test -f test.txt
# echo $?
0

(补充:这里以测试文件 test.txt 是否存在为例)

2.4 案例四:对变量进行比较

# a=1
# test $a == 1
# echo $?
0

(补充:这里以测试变量 a 是否等于数字 1 为例)

[命令] Linux 命令 mail (发送邮件)

内容一:mail 命令选项

1.1 输入 mail 命令后的选项

1) h 或者 headers 显示处于激活状态的邮件开头
2) f 或者 from 显示编号为 的邮件的标题
2) t 或者 type 显示编号为 的邮件
3) top 显示当前指针所指向的邮件头
4) n 或者 next 显示下一条邮件信息
5) e 编辑编号为 的邮件
6) d 或者 delete 删除编号为 的邮件
7) u 或者 undelete 取消删除编号为 的邮件
8) s 或者 save 追加信息到编号为 的邮件信息到 目录中并标记和保存
9) c 或者 copy 追加信息到编号为 的邮件信息到 目录中但不保存
10) w 或者 write 追加信息到编号为 的邮件信息到 文件中并保存附件
11) R 或者 Reply 回复编号为 的邮件的发件人
12) r 或者 reply 回复编号为 的邮件的发件人和所有收件人
13) m 或者 mail 回复编号为 的邮件,并回复多个联系人,多个收件人用空格分开 (需要 sendmail 软件支持此功能)
14) q 或者 quit 退出并保存新编辑的内容,q 会把邮件放在 ~/mbox 中,执行 pre 后就不取回
15) pre 将编号为 的邮件保留在 /usr/spool/mail,q 会把邮件放在 ~/mbox 中,执行 pre 后就不取回
16) x 或者 xit 只退出不保存新编辑的内容
17) file 显示邮件总数和在系统中所在的目录等信息
18) ! 执行 shell 的命令,例如 !ls
19) list 列出所有可用的命令

1.2 在 mail 命令后添加选项

1) -s 设置邮件的标题
2) -a 添加附件
3) -c …… 给多个邮件地址抄送邮件,不同邮件的邮件地址用空格隔开
4) -b …… 给多个邮件地址悄悄抄送邮件,不同邮件的邮件地址用空格隔开
5) -e 检查系统邮件中是否有邮件
6) -f 显示邮箱里的邮件
7) -f + 显示 folder 目录邮箱中的邮件
8) -i 忽略 tty 信号中断
9) -v 显示发送邮件过程的详细信息
10) -h 显示帮助信息
11) uuencode 发送文件,第一个附件是要发送的附件,第二个是设置的名称 (此选项需要安装 sharutils 软件)

内容二:mail 命令的使用案例

2.1 交互式发送邮件

# mail -s test mingyu.zhu@eternalcenter.com

(补充:这里以向邮箱 mingyu.zhu@eternalcenter.com 发送标题为 test 的邮件为例)

(注意:键入此命令后进入交互式编辑内容的模式,内容编辑完了以后可以按下 “ctrl” 键之后再按下 “D” 键退出)

2.2 非交互式发送邮件

# echo 'test content' | mail -s 'test header' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 内容为 test content 的邮件为例)

2.3 非交互式将文件里的内容作为内容发送邮件

# mail -s “test.txt” mingyu.zhu@eternalcenter.com < test.txt

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 将 test.txt 文件里的内容作为邮件内容的邮件为例)

2.4 非交互式将文件作为附件发送邮件

# uuencode /tmp/test.txt test.txt | mail -s 'test' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test 将 test.txt 文件作为名为 test.txt 的附件的邮件为例)

2.5 非交互式打包将文件作为附件发送邮件

# tar -czf test.txt.tar /tmp/test.txt | uuencode test.txt.tar | mail -s 'test' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test 将 test.txt.tar 文件作为名为 test.txt.tar 的附件的邮件为例)

2.6 非交互式将给多个用户抄送邮件

# mail -s “test.txt” -c "mingyu.zhu2@eternalcenter.com mingyu.zhu1@eternalcenter.com" mingyu.zhu@eternalcenter.com < test.txt

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 将 test.txt 文件里的内容作为邮件内容的邮件,并抄送给 mingyu.zhu2@eternalcenter.com 邮箱和 mingyu.zhu1@eternalcenter.com 邮箱为例)

[命令] Linux 命令 xargs (替代参数)

内容一:理解 xargs 的作用

1.1 Linux 命令可接收的内容

1) 第一种内容是输入
2) 第二中内容是参数

1.2 Linux 命令对可接收内容的态度

1) 有些命令既可以接收输入也可以接受参数
2) 有些命令只能接收输入
3) 有些命令只能接收参数

1.3 xargs 的作用

当管道符号 “|” 将前一个命令的输出结果转换为下一个命令的输入时,再将此输入转换为参数

1.4 理解 xargs 作用的案例

1.4.1 准备一个用于测试的文件
# echo "This is a test file" > test.txt
1.4.2 测试没有 xargs 命令的情况
# echo test.txt | cat
test.txt

(补充:此时 test.txt 对于 cat 而言是输入)

1.4.3 测试有 xargs 命令的情况
# echo test.txt | xargs cat
This is a test file

(补充:此时 test.txt 对于 cat 而言是参数)

内容二:xargs 的使用案例

2.1 案例一:xargs 对参数进行分行

# echo aa bb cc dd ee | xargs -n 2
aa bb
cc dd
ee

(补充:这里以设置每 2 个参数为 1 行为例)

2.2 案例二:xargs 指定分割参数的分割符

# echo aa@bb@cc@dd@ee | xargs -d @
aa bb cc dd ee

(补充:这里以将 @ 设置为分割符为例)

2.3 案例三:xargs 不输出参数,而是将参数传输给后面的命令,并让此命令使用此参数执行

# echo aa@bb@cc@dd@ee | xargs -d @ -p echo
echo aa bb cc dd ee
 ?...y
aa bb cc dd ee

(补充:这里以需要在执行命令 echo aa bb cc dd ee 前输入 y 为例)

2.4 案例四:xargs 只输出前几个参数

# echo aa bb cc dd ee | xargs -E cc echo
aa bb

(补充:这里以只输出在 cc 之前的参数,不包括 cc 本身为例)

(注意:当使用了 -d 参数后,-E 参数会失效)

2.5 案例五:xargs 将参数放到后面命令的指定位置

# echo test | xargs -I '{}' find '{}' -name a.txt


补充:
1) 这里以将命令 echo test 输出结果的值,传递给命令 find ‘{}’ -name a.txt 的 ‘{}’ 选项为例
2) xargs 默认会将处理后的参数整体传递到下一个命令的问题

[命令] Linux 命令 vi 和 vim (文件编辑)

内容一:vi 和 vim 简介

1.1 vi 和 vim 模式简介

1) 命令模式:主要用于对文件进行批量编辑
2) 末行模式:主要用于保存退出文件
3) 输入模式:主要用于编辑文件

1.2 使用 vi 或 vim

1.2.1 通过 vi 或 vim 打开某个文件
# vi <file>

或者:

# vim <file>

(补充:此时将自动进入命令模式)

1.2.2 通过 vi 或 vim 打开某个文件,并自动进入到某行
# vi +<line number> <file>

或者:

# vim +<line number> <file>

(补充:此时将自动进入命令模式)

内容二:vi 或 vim 在命令模式下的操作

2.1 在命令模式下让光标移动

2.1.1 在命令模式下让光标移动
2.1.1.1 在命令模式下让光标向上移动
2.1.1.1.1 在命令模式下让光标向上移动 (在行内移动)

按下 “g” 键再按下 “上方向” 键

或者:

按下 “g” 键再按下 “j” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.1.2 在命令模式下让光标向上移动 (不在行内移动)

按下 “上方向” 键

或者:

按下 “k” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

或者:

按下 “<any number>” 键再按下 “上方向” 键

(补充:此方法会向上方移动对应数字个光标位)

或者:

按下 “<any number>” 键再按下 “k” 键

(补充:此方法会向上方移动对应数字个光标位)

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.2 在命令模式下让光标向下移动
2.1.1.2.1 在命令模式下让光标向下移动 (在行内移动)

按下 “g” 键再按下 “下方向” 键

或者:

按下 “g” 键再按下 “k” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.2.2 在命令模式下让光标向下移动 (不在行内移动)

按下 “下方向” 键

或者:

按下 “j” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

或者:

按下 “<any number>” 键再按下 “下方向” 键

(补充:此方法会向下方移动对应数字个光标位)

或者:

按下 “<any number>” 键再按下 “j” 键

(补充:此方法会向下方移动对应数字个光标位)

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.3 在命令模式下让光标向左移动

按下 “左方向” 键

或者:

按下 “h” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

或者:

按下 ““<any number>” 键之后再按下 “左方向” 键

(补充:此方法会向左方移动对应数字个光标位)

或者:

按下 ““<any number>” 键之后再按下 “h” 键

(补充:此方法会向左方移动对应数字个光标位)

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.4 在命令模式下让光标向右移动

按下 “右方向” 键

或者:

按下 “l” 键

(注意:此方法还可以实现让光标跨分布或跨终端移动)

或者:

按下 ““<any number>” 之后再按下 “右方向” 键

(补充:此方法会向右方移动对应数字个光标位)

或者:

按下 ““<any number>” 之后再按下 “l” 键

(补充:此方法会向右方移动对应数字个光标位)

(注意:此方法还可以实现让光标跨分布或跨终端移动)

2.1.1.5 在命令模式下让光标移动到文件的指定行数

按下 ““<any number>” 键之后再按下 “G” 键

(补充:此方法会让光标移动到对应数字的行)

2.1.2 在命令模式下让光标移动到行的首尾
2.1.2.1 在命令模式下让光标移动到行的首部
2.1.2.1.1 在命令模式下让光标移动到行的首部

按下 “0” 键

2.1.2.1.2 在命令模式下让光标移动到行的首部 (第一个非空白字符)

按下 “^” 键

2.1.2.2 在命令模式下让光标移动到行的尾部

按下 “$” 键

2.1.3 在命令模式下让光标移动到当前窗口的首尾或中间
2.1.3.1 在命令模式下让光标移动到当前窗口的首行

按下 “H” 键

2.1.3.2 在命令模式下让光标移动到当前窗口的中间行

按下 “M” 键

2.1.3.2 在命令模式下让光标移动到当前窗口的尾行

按下 “L” 键

2.1.4 在命令模式下让光标移动到文件的首尾
2.1.4.1 在命令模式下让光标移动到文件的首行

按下 “g” 键之后再按下 “g” 键

2.1.4.2 在命令模式下让光标移动到文件尾行

按下 “G” 键

2.2 在命令模式下翻屏

2.2.1 向上翻屏

同时按下 “ctrl” 键和 “b” 键

2.2.2 向下翻屏

同时按下 “ctrl” 键和 “f” 键

2.2.3 向上翻半屏

同时按下 “ctrl” 键和 “u” 键

2.2.4 向下翻半屏

同时按下 “ctrl” 键和 “e” 键

2.2.5 移动到文件指定百分比的位置

输入百分比后再按下 “%” 键

2.2.6 将当前行视为当前窗口的中间

按下 “z” 键之后再按下 “z” 键

2.2.7 将当前行视为当前窗口的首行

按下 “z” 键之后再按下 “t” 键

2.2.8 将当前行视为当前窗口的首行

按下 “z” 键之后再按下 “b” 键

2.3 在命令模式下删除数据

2.3.1 在某行的范围内删除数据
2.3.1.1 删除单词
2.3.1.1.1 删除 1 个单词

按下 “d” 键之后再按下 “w” 键

2.3.1.1.2 删除多个单词

按下 “d” 键之后再按下 “<any number>” 键之后再按下 “w”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向后删除对应数字个单词)

2.3.1.2 删除光标前面的内容
2.3.1.2.1 删除光标之前多个字符

按下 “d” 键之后再按下 “<any number>” 键之后再按下 “h”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向前删除对应数字个字符)

2.3.1.2.2 在光标所在行的范围内删除光标之前的所有字符

同时按下 “d” 键和 “0” 键

2.3.1.3 删除光标后面的内容
2.3.1.3.1 删除光标之后多个字符

按下 “d” 键之后再按下 “<any number>” 键之后再按下 “l”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向后删除对应数字个字符)

2.3.1.3.2 在光标所在行的范围内删除光标之后的所有字符

同时按下 “d” 键和 “$” 键

或者:

按下 “D” 键

2.3.2 删除行
2.3.2.1 删除光标所在行

按下 “d” 键之后再按下 “d” 键

2.3.2.2 删除某行到某行里的所以有行

按下 “<start number>” 键之后再按下 “,” 键之后再按下 “<end number>” 之后再按下 “d” 键

(补充:此方法会删除从对应数字到对应数字的行)

2.3.2.3 从光标所在行开始删除多行

按下 “<any number>” 键之后再按下 “d” 键之后再按下 “d” 键

(补充:此方法会从光标所在行开始向后删除对应数字个行)

2.3.2.4 从光标所在行开始删除此行和后面的所有行

按下 “d” 键之后再按下 “G” 键

2.3.2.5 从光标所在行开始删除此行和前面的所有行

按下 “d” 键之后再按下 “1” 键之后再按下 “G” 键

或者:

按下 “d” 键之后再按下 “g” 键之后再按下 “g” 键

2.3.3 重复相同的删除操作

按下 “c” 键

2.4 在命令模式下剪切数据

2.4.1 在某行的范围内删除 1 个字符
2.4.1.1 在光标所在行的范围内删除光标之前的 1 个字符

按下 “X” 键

2.4.1.2 在光标所在行的范围内删除光标之后的 1 个字符

按下 “x” 键

2.4.2 在某行的范围内删除多个字符
2.4.2.1 在光标所在行的范围内删除光标之后的多个字符

按下 “<any number>” 键之后再按下 “X” 键

(补充:此方法会在光标所在行的范围内从光标所在位置开始向后删除对应数字个字符)

2.4.2.2 在光标所在行的范围内删除光标之前的多个字符

按下 “<any number>” 键之后再按下 “x” 键

(补充:此方法会在光标所在行的范围内从光标所在位置开始向前删除对应数字个字符)

2.5 在命令模式下复制数据

2.5.1 在某行的范围内复制数据
2.5.1.1 复制单词
2.5.1.1.1 复制 1 个单词

按下 “y” 键之后再按下 “w” 键

2.5.1.1.2 复制多个单词

按下 “y” 键之后再按下 “<any number>” 键之后再按下 “w”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向后复制对应数字个单词)

2.5.1.2 复制光标前面的内容
2.5.1.2.1 复制光标之前多个字符

按下 “y” 键之后再按下 “<any number>” 键之后再按下 “h”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向前复制对应数字个字符)

2.5.1.2.2 在光标所在行的范围内复制光标之前的所有字符

同时按下 “y” 键和 “0” 键

2.5.1.3 复制光标后面的内容
2.5.1.3.1 复制光标之后多个字符

按下 “y” 键之后再按下 “<any number>” 键之后再按下 “l”

(补充:此方法会在光标所在行的范围内从光标所在位置开始向后复制对应数字个字符)

2.5.1.3.2 在光标所在行的范围内复制光标之后的所有字符

同时按下 “y” 键和 “$” 键

2.5.2 复制行
2.5.2.1 复制光标所在行

按下 “y” 键之后再按下 “y” 键

2.5.2.2 复制某行到某行里的所以有行

按下 “<start number>” 键之后再按下 “,” 键之后再按下 “<end number>” 之后再按下 “y” 键

(补充:此方法会复制从对应数字到对应数字的行)

2.5.2.3 从光标所在行开始复制多行

按下 “<any number>” 键之后再按下 “y” 键之后再按下 “y” 键

(补充:此方法会从光标所在行开始向后复制对应数字个行)

2.5.2.4 从光标所在行开始复制此行和后面的所有行

按下 “y” 键之后再按下 “G” 键

2.5.2.5 从光标所在行开始复制此行和前面的所有行

按下 “y” 键之后再按下 “1” 键之后再按下 “G” 键

或者:

按下 “y” 键之后再按下 “g” 键之后再按下 “g” 键

2.6 在命令模式下粘贴数据

2.6.1 从光标所在行开始向上复制

按下 “p” 键

2.6.2 从光标所在行开始向上复制

按下 “P” 键

2.7 在命令模式下进入其他模式

2.7.1 在命令模式下进入输入模式

1) 按下 “i” 键,在光标所在位置进入输入模式
2) 按下 “a” 键,在光标所在位置的后 1 个字符进入输入模式
3) 按下 “I” 键,在光标所在行行首的第 1 个非空格字符进入插入模式
4) 按下 “A” 键,在光标所在行的行尾进入插入模式
5) 按下 “O” 键,在光标所在行的上 1 行新建 1 行,并在行首进入输入模式
5) 按下 “o” 键,在光标所在行的下 1 行新建 1 行,并在行首进入输入模式

2.7.2 在命令模式下进入末行模式

按下 “:” 键

2.7.3 在命令模式下进入视图模式
2.7.3.1 以行的方式进入视图模式

按下 “v” 键

或者:

按下 “V” 键

2.7.3.2 以字符的方式进入视图模式

同时按下 “ctrl” 键和 “v” 键

2.7.3.3 视图模式下的操作案例
2.7.3.3.1 案例一:批量删除行首字符

在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再选择对应的行首再按下 “d” 键或者 “x”键,删除在这些行行首的字符

2.7.3.3.2 案例二:批量行首插入字符

在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再选择对应的行首再按下 “I” 键再输入 <content>再按 “esc” 键,在这些行行首插入 <content>

2.7.3.3.3 案例三:在光标所在行以及前面的所有行的行首插入字符

在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再按下再按 “I” 键再按下 “g” 键再按 “g” 键再输入<content> 再按 “esc” 键,在光标所在行以及前面的所有行的行首插入 <content>

2.7.3.3.4 案例四:在光标所在行以及后面的所有行的行首插入字符

在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再按下再按 “I” 键再按下 “G” 键再输入 <content> 再按 “esc” 键,在这光标所在行以及后面的所有行的行首插入 <content>

2.7.4 在命令模式下进入替换模式

按下 “R” 键

2.8 在命令模式下的其他操作

2.8.1 将光标所在行与下面的行合并

按下 “J” 键

2.8.2 重复上 1 个操作

按下 “ctrl” 键和 “r” 键

或者:

按下 “.“ 键

2.8.3 撤销上 1 个操作

按下 “u” 键

2.8.4 保存此文当并退出 Vi 或 vim 模式

按下 “Z” 键之后再按下 “Z” 键

内容三:vi 或 vim 在末行模式下的操作或设置

3.1 在末行模式下的常用操作

1) :w 保存当前内容
2) :w! 强制保存当前内容
3) :w <file> 保存当前内容到另 1 个名为 <file> 文件
4) :w! <file> 强制保存当前内容到另 1 个名为 <file> 文件
5) :q 退出
6) :q! 强制推出
7) :wq 或者 : x 保存当前内容并退出
8) :wq! 强制保存当前内容并退出
9) :wq <file> 或者 :saveas <file> 保存当前内容到另 1 个名为 <file> 文件并退出
10) :wq! <file> 强制保存当前内容到另 1 个名为 <file> 文件并退出
11) :e! 放弃当前所有修改,将内容恢复到上次保存时
12) :! <command> 使用 Linux 命令
13) :r <file> 在当前行插入名为 <file> 文件里的内容
14) :<n>r <file> 在第 n 行插入名为 <file> 文件里的内容

3.2 在末行模式下的设置

1) :set nu 或者 :set number 开启行号
2) :set nonu 或者 :set nonumber

3.3 在末行模式下搜索

3.3.1 在末行模式下搜索关键字
3.3.1.1 向下查找匹配的关键字

: /<key word> 之后按 “n” 键或者 “N” 键显示下 1 个匹配的关键字

3.3.1.2 向上查找匹配的关键字

:?<key word> 之后按 “n” 键或者 “N” 键显示下 1 个匹配的关键字

3.3.2 在末行模式下搜索行号

:<line number> 之后按 “回车” 键

3.4 在末行模式下替换关键字的使用案例

3.4.1 案例一:以 <new keyword> 替换光标所在行的第 1 个 <old keyword>
:s/<old keyword>/<new keyword>
3.4.2 案例二:以 <new keyword> 替换光标所在行的所有 <old keyword>
:s/<old keyword>/<new keyword>/g
3.4.3 案例三:以 <new keyword> 替换从 <start number> 行到 <end number> 行的所有 <old keyword>
<start number>,<end number>s/<old keyword>/<new keyword>/g
3.4.4 案例四:以 <new keyword> 替换从光标所在行开始到 <any number> 行的所有 <old keyword>
:,+<any number>s/<old keyword>/<new keyword>/g
3.4.5 案例五:以 <new keyword> 替换从 <any number> 行到最后行的所有 <old keyword>
:<any number>,%s/<old keyword>/<new keyword>/g
3.4.6 案例六:以 <new keyword> 替换全文的所有 <old keyword>
:%s/<old keyword>/<new keyword>/g

3.5 在末行模式进入命令模式

:按下 “esc” 键

内容四:vi 或 vim 在输入模式下的操作

4.1 在输入模式下输入内容

正常键入内容即可

4.2 在输入模式下进入命令模式

按下 “esc” 键