vi是unix/linux操作系统中最经典的文本编辑器,只能是编辑字符,不能对字体、段落进行排版;
1. 工作模式
vi有3种工作模式,对其的起名也五花八门,重在理解
命令 | 描述 |
---|
命令模式(command mode) | 移动光标,删除、复制字符等 |
编辑模式(input mode) | 修改文本内容 |
末行模式 (last line mode) | 进行查找等相关操作,在末尾输入相关命令 |
vi file,进入命令模式,file存在则打开,不存在则创建
命令模式下,按任意键 [i, I, o, O, a, A] 进入编辑模式
命令模式下,按任意键 [: / ?] 进入末行模式
编辑模式下,Esc切换到命令模式
模型模式下,Esc切换到命令模式
命令 | 描述 |
---|
i | 在光标位置之前插入字符 |
I | 在光标所在行的行首插入字符 |
o | 在光标位置下面创建一行 |
O | 在光标位置上面创建一行 |
a | 在光标位置之后插入字符 |
A | 在光标所在行的行尾插入字符 |
2. 文件的打开和保存
命令 | 描述 |
---|
vi file | 打开文件,进入命令模式 |
vi -R file | 只读的形式打开文件,不能编辑文件 |
view file | 只读的形式打开文件,不能编辑文件 |
:w | 保存文件,不退出,相当于ctrl+s |
:q | 退出文件,不保存 |
:q! | 强制退出文件,不保存 |
:wq | 保存文件,并退出 |
ZZ | 相当于wq,使用起来更加方便 |
3. 光标移动与滚屏
光标移动
命令 | 描述 |
---|
k 或 上方向键 | 向上移动一行 |
j 或 下方向键 | 向下移动一行 |
h 或 左方向键 | 向左移动一个字符 |
l 或 右方向键 | 向右移动一个字符 |
0 或 Home | 本行开始位置 |
$ 或 End | 本行末尾 |
gg | 文本开始位置 |
G | 文本末尾 |
数字 + Enter | 光标位置向下移动的行数 |
数字 + G | 跳转到数字所在的行数 |
:n+Enter | 跳转到n行 |
滚屏
命令 | 描述 |
---|
ctrl + u | 向上滚动半屏 |
ctrl + d | 向下滚动半屏 |
ctrl + b | 向上滚动全屏 |
ctrl + f | 向下滚动全屏 |
ctrl + y | 向上滚动一行 |
ctrl + e | 向下滚动一行 |
4. 删除
命令 | 描述 |
---|
dd | 删除光标所在的行 |
ndd | 向下删除n行,从光标所在位置行开始计算(1dd == dd) |
dw | 删除光标所在位置到字符串结尾处的内容(包含光标) |
d^ | 删除光标所在位置到到行首的位置(不包含光标) |
D 或 d$ | 删除光标所在位置到到行尾的位置(包含光标) |
dG | 删除光标所在行,到文本尾的内容 |
x | 删除光标所在位置的字符 |
nx | 删除光标所在位置的字符,执行n次,n是数字,例如3x |
X | 删除光标位置前一个字符 |
nX | 删除光标位置前一个字符,执行n次,n是数字,例如3X |
5. 修改
命令 | 描述 |
---|
cc | 删除光标所在的行,并进入编辑模式 |
cw | 删除光标所在位置到字符串结尾处的内容(包含光标),并进入编辑模式 |
r | 替换光标所在的字符,1个字符 |
R | 开始替换光标所在的字符,直到按Esc结束 |
s | 删除当前字符,并进入编辑模式 |
S | 删除光标所在行,并进入编辑模式 |
6. 复制粘贴
命令 | 描述 |
---|
yy | 复制当前行 |
nyy | 向下复制n行 |
yw | 复制一个字符串,从光标所在的位置开始,到当前字符串的结尾 |
p | 从当前光标之后,插入粘贴的内容 |
P | 从当前光标之前,插入粘贴的内容 |
7. 查找替换
命令 | 描述 |
---|
/ | 向下查找,输入查找的内容之后,按enter ,再按N(向前)或者n(向后) |
? | 向上查找,输入查找的内容之后,按enter ,再按N(向后)或者n(向前) |
:n1,n2s/test1/test2/g | 在第 n1 行和 n2 行之间寻找 test1 这个字符串,并且将其替换为 test2 |
:1,$s/test1/test2/g | 从第一行到最后一行寻找test1 这个字符串,并且将其替换为test2 |
:1,$s/test/test/gc | 从第一行到最后一行寻找test1 这个字符串,并且将其替换为test2,并提示用户是否需要进行确认 |
8. 辅助操作
命令 | 描述 |
---|
:set nu 或 :set number | 设置行号 |
u | 撤销上次从操作 |
ctrl + r | 恢复撤销的内容 |
ggdG | 删除整个文本的内容(组合命令) |
J | 将光标所在的行和下一行连接在一起 |
多练习,用多了就习惯了,其它命令后续逐步补充