vi 编辑常用命令整理

242 阅读3分钟

在日常开发中,总会遇到vi编辑的场景,有时间进行了部分总结:

vi编辑器中有三种状态模式

  1. 命令模式

  2. 输入模式

  3. 末行模式

常用命令:

进入编辑环境

// 直接进入编辑环境
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末行命令