深入了解 linux 中 vi 命令的使用

发布时间:2023-05-24

一、基础操作

1、打开文件

$ vi filename

2、插入与编辑

i:在当前光标前插入文本
I:在当前行首插入文本
o:在当前光标下插入一行并进入插入模式
O:在当前光标前插入一行并进入插入模式
a:在当前光标后插入文本
A:在当前行尾插入文本
r:替换当前字符
R:进入替换模式,替换光标后的文本

3、删除

x:删除当前字符
dw:删除从当前位置到单词结尾
d^:删除从当前位置到行首
d0:删除从当前位置到行尾
dd:删除整行

二、模式切换与保存

1、模式切换

ESC:退出插入模式进入命令模式
i:从命令模式进入插入模式
v:从命令模式进入可视模式

2、保存与退出

:w:保存修改
:wq:保存修改并退出
:q!:放弃修改并退出
:ZZ:保存修改并退出
:w filename:另存为文件

三、搜寻与替换

1、搜寻

/word:向下查找指定文本 word
?word:向上查找指定文本 word
n:继续下一个查找
N:继续上一个查找

2、替换

:s/old/new/g:全局替换,将所有 old 替换为 new
:s/old/new/ng:仅替换符合要求的部分,n 为数字,表示第 n 次出现后的部分
:%s/old/new/g:在整个文件中进行替换

四、光标移动与编辑技巧

1、光标移动

h:向左移动一个字符
l:向右移动一个字符
j:向下移动一行
k:向上移动一行
w:向右移动一个单词
e:向右移动一个单词结尾
b:向左移动一个单词
0:移动到行首
$:移动到行尾

2、编辑技巧

.=:重复上一个命令
u:撤销上一个命令
CTRL + r:恢复命令
yy:复制当前行
p:粘贴

五、其他常用命令

:set number:显示行号
:set nonumber:移除行号
:set hlsearch:高亮显示搜寻结果
:set nohlsearch:移除高亮
:set ignorecase:忽略大小写
:set noignorecase:区分大小写
:set autoindent:自动缩进
:set paste:避免因文本格式而造成的插入问题