vi 的三种工作模式以及切换

20201211161814180 (1)

进入vi的命令

vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename…filename :打开多个文件,依次进行编辑

一般指令模式 (command mode)

刚进入vi 时的默认模式 。在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、粘贴”来处理你的文件数据。

编辑模式 (insert mode)

在一般指令模式中可以进行删除、复制、粘贴等等的动作,但是却无法编辑文件内容的! 要等到你按下“i, I, o, O, a, A, ”等任何一个字母之后才会进入编辑模式。注意了!通常在Linux 中,按下这些按键时,在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。

命令行命令模式 (command-line mode)

在一般模式当中,输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。此模式下能够进行:搜索、保存、离开 等操作。

vi 常用命令操作

从一般指令模式,进入编辑模式:

  • i 光标前插入。
  • a 光标后插入
  • o 光标下一行插入。

从任何模式退出:先按 Esc键,之后输入:

  • :q 退出 vi。
  • :q! 强制退出,不保存文件。
  • :wq 保存文件并退出。

移动光标(一般指令模式)

image-1659419177204
gg 光标移动到文档头部
G 光标移动到文档尾部
ngg 光标移动到第 n 行头部
n+ 光标向下移动 n 行
n- 光标向上移动 n 行
0 光标移动到当前行行首
$ 光标移动到当前行行尾
w 光标移动到下一个字的开头
b 光标移动到上一个字的开头
fx 光标移动到 当前行下一个字母x的位置

复制粘贴(一般指令模式)

yy 复制当前行
nyy 复制当前行及下面的 n-1 行
p 粘贴

删除(一般指令模式)

x 删除光标后一个字符
X 删除光标前一个字符
nx 删除光标后 n 个字符
nX 删除光标前 n 个字符
d0 从光标处删到行首
d$ 从光标处删到行尾
dd 删除光标所在行
ndd 删除光标所在行及其后 n-1 行

撤销(一般指令模式)

u 撤销上一步操作
CTRL + r 恢复至上一步撤销

搜索查找(命令行模式)

/str 从光标处向文件尾部搜索,查找 “str” 字符串,n N 查看下/上一个位置。(按n向后搜索,按N向前搜索)
?str 从光标处向文件首部搜索,查找 “str” 字符串,n N 查看下/上一个位置。

替换(命令行模式)

:s/str1/str2/g 将当前行中所有的 “str1”,均用 “str2” 替换。
:s/str1/str2/gc 将当前行中所有的 “str1”,均用 “str2” 替换。替换时需要确认。
%s /源/目标替换/g
:%s/str1/str2/g 将文件中所有的 “str1”,均用 “str2” 替换。
:%s/str1/str2/gc 将文件中所有的 “str1”,均用 “str2” 替换。替换时需要确认。
1. 10s /源/目标替换 仅在1 -10 行中替换

转载于: