在日常开发中,总会遇到vi编辑的场景,有时间进行了部分总结:
vi编辑器中有三种状态模式
-
命令模式
-
输入模式
-
末行模式
常用命令:
进入编辑环境
// 直接进入编辑环境
vi
// 进入编辑环境并打开(新建)文件
vi myfiletest
文件保存与另存为
// 保存文件,保存对vi编辑器中已打开文件的修改
:w
// 另存为文件,将vi编辑器中的内容另存为指定文件名
:w myfiletestnew
退出vi编辑环境
// 未修改退出,没有对vi编辑器中打开的文件进行修改,或已对修改进行了保存,直接退出vi编辑器
:q
// 保存并退出,对vi编辑器中的文件进行保存并退出vi编辑器
:wq
// 不保存退出,放弃对文件内容的修改,并退出vi编辑器
:q!
进入输入模式
i 在当前光标处进入插入状态
a 在当前光标后进入插入状态
A 将光标移动到当前行的行末,并进入插入状态
o 在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O 在当前行的上面插入新行,光标移动到新行的行首,进入插入状态
cw 删除当前光标到所在单词尾部的字符,并进入插入状态
c$ 删除当前光标到行尾的字符,并进入插入状态
c^ 命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态
光标的移动和翻页操作
:set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
1G 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件中的第#行
删除操作
x 删除光标处的单个字符
dd 删除光标所在行
dw 删除当前字符到单词尾(包括空格)的所有字符
de 删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$ 删除当前字符到行尾的所有字符
d^ 删除当前字符到行首的所有字符
J 删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容
撤消操作
// 可以多次使用u命令恢复已进行的多步操作
u 取消最近一次的操作,并恢复操作结果
U 取消对当前行进行的所有操作
Ctrl + r 对使用u命令撤销的操作进行恢复
复制与粘贴操作
yy 复制当前行整行的内容到vi缓冲区
yw 复制当前光标到单词尾字符的内容到vi缓冲区
y$ 复制当前光标到行尾的内容到vi缓冲区
y^ 复制当前光标到行首的内容到vi缓冲区
p 读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)
字符串查找操作
/word 从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word”
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
字符串替换操作
:s/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
使用vi在线帮助
在vi编辑器中按“F1”键
:help 输入help末行命令