1、进入vi
进入编辑文件:vi filename
,如果文件不纯在,则创建并编辑;
2、vi三种模式
命令模式、插入模式、底行模式
模式 | 进入方式 | 操作 |
---|---|---|
命令模式 | ESC进入 | dd:删除 |
2dd:删除两行 | ||
D:从光标删除到行尾 | ||
p:粘贴 | ||
u:恢复,返回 | ||
“.” : 重复前一命令 | ||
插入模式 | i:光标前插入 | |
a:光标下一个插入 | ||
I:行首插入 | ||
A:行尾插入 | ||
o:下一行插入 | ||
O:上一行插入 | ||
底行模式 | shift+:进入 | |
q:结束编辑 | ||
q!:强制退出,不保存 | ||
w:保存不退出 | ||
w filename:将编辑内容存为名filename的文件 | ||
wq:保存退出 | ||
x:若有修改存盘,退出程序 | ||
e filename:编辑名为filename的文件 | ||
set nu:显示行号 | ||
set nonu:不显示行号 | ||
ESC:回到命令模式 |
3、vi常用命令
命令模式下
1. 光标移动
光标移动 | |
---|---|
h | 左移 |
j | 右移 |
k | 上移 |
l | 下移 |
0 | 移至行首 |
$ | 移至行尾 |
G | 移至文件最后一行 |
ctrl+F | 向后翻一页 |
ctrl+B | 向前翻一页 |
命令模式下
2. 删除修改
删除与修改 | |
---|---|
x | 删除光标后字符 |
X | 删除光标前字符 |
dd | 删除光标所在行 |
ndd | 删除包括光标所在行的n行文本 |
r | 修改光标所在的字符 |
R | 进入替换状态,直到按Esc键回到命令模式为止 |
s | 删除光标所在字符,并进入插入模式 |
S | 删除光标所在行,并进入插入模式 |
u | 恢复刚才被修改的文本 |
U | 恢复光标所在行的所有修改 |
. | 重复上一次命令的操作 |
命令模式下
3. 复制
复制 | |
---|---|
Y | 复制到当前行至编辑缓冲区 |
nyy | 恢复当前行开始的n行至编辑缓冲区 |
p | 将编辑缓冲区的内容粘贴到光标后的一行 |
P | 将编辑缓冲区的内容粘贴到光标前的一行 |
4、搜索与替换
在底行模式下
1. 搜索
搜索 | |
---|---|
/string | 用n搜索下一个 |
例: | /asdf |
?string | 用n搜索下上个 |
例: | ?asdf |
2. 替换
全文替换:%s/old/new/[c,g,i]
例:%s/asd/zzz/g
%s:全文搜索
部分替换::n1,n2s/old/new/[c,g,i]
例:2,3s/asd/zzz/g
n1:从n1开始,到n2结束
s:搜索
参数 | |
---|---|
c (confirm) | 每次替换前会询问 |
g (globe) | 不询问,整行替换 |
i (ignore) | 不分大小写 |
I (ignore) | 大小写敏感 |