基本介绍
- vi包含三种模式:命令模式、编辑模式和尾行模式
- vi一个文件后,默认处于命令模式
模式转换
- 命令模式是三个模式的核心,也是模式转换的中转站
- 命令模式下,使用
i,a,o等字母以不同的状态进入编辑模式 - 编辑模式下按
Esc键退回命令模式 - 命令模式下,使用
:进入尾行模式,尾行多用于查找和保存 - 尾行模式下按
Esc退回命令模式
命令模式相关命令
1.进入编辑模式
i在光标所在位置之前插入字符a在光标所谓位置之后插入字符o当前行的下一行插入字符O当前行的上一行插入字符I在文件首插入A在文件尾插入
2.常用的操作
u撤销ctrl + u反撤销.重复执行上次操作>>当前行缩进<<当前行反缩进shirft + zz保存后退出,相当于:wq
3.编辑相关命令
yy复制当前行nyy复制当前行往下的n行,如2yy复制两行dd剪切当前行,可用p粘贴,其他剪切同理ndd简介当前行往后的n行,如2dd剪切两行x删除当前字符X删除当前字符的前一个字符dw剪切当前单词d0剪切当前位置到行首的所有字符D剪切当前位置到行尾的所有字符p粘贴r替换当前位置的字符R从当前位置开始往后连续替换字符
4.批量选择与缩进
v进入选择模式,使用上下左右进行选择V和v大致相同,区别就是该命令会选择光标经过的行的一整行>选择的行往右缩进,可以配合.命令使用<选择的行往左缩进,可以配合.命令使用
5.跳转相关命令
h,j,k,l分别表示左,下,上,右nG跳转到第n行,如20G跳转至第2o行gg跳转到文件首G跳转到文件尾{跳转到当前代码块首部}跳转到当前代码块尾部w跳转到下一个单词b跳转到上一个单词M跳转到当前屏幕区域的中间行H跳转到当前屏幕区域的首行L跳转到当前屏幕区域的尾行ctrl + f向下翻一页ctrl + b向上翻一页ctrl + d向下翻半页ctrl + u向上翻半页
尾行模式与查找
:进入尾行模式,一般使用wq进行报错/进入查找/hello查找所有包含hello的位置,并会高亮显示- 要去掉高亮,可以查找一个不存在的字符串
a跳转到下一个搜索结果A跳转到上一个搜索结果:%s/hello/world将所有的hello替换为world:11,16s/hello/world/g将11-16行的hello替换为world,可用于函数变量的重命名