vi编辑器的三种模式:
vi编辑器中有三种状态模式
命令模式
输入模式
末行模式
进入VI编辑器默认的情况下是命令模式。
在命令模式下按I键进入输入模式。
在命令模式下按:键进入末行模式。
末行模式命令使用完毕后就默认进入命令模式。
在输入模式下按ESC键进入命令模式。
vi编辑器的启动与退出 :
直接进入编辑环境
$ vi
进入编辑环境并打开(新建)文件
$ vimyfile
退出vi编辑环境
输入末行命令放弃对文件的修改,并退出编辑器
:q!
文件的打开与读取操作 :
打开新的文件到vi编辑器中
:efilename
打开新的文件到vi编辑器中,并放弃对当前文件的修改
:e!filename
读取文件内容到当前vi编辑器中
:rfilename
使用vi打开多个文件:
在输入vi命令时使用多个文件名作为参数:
vi file1file2 file3 ...
文件保存与另存为:
保存文件
保存对vi编辑器中已打开文件的修改
:w
另存为文件
将vi编辑器中的内容另存为指定文件名
:w myfile
退出vi编辑器的多种方法:
未修改退出
没有对vi编辑器中打开的文件进行修改,或已对修改进行了保存,直接退出vi编辑器
:q
保存并退出
对vi编辑器中的文件进行保存并退出vi编辑器
:qw
不保存退出
放弃对文件内容的修改,并退出vi编辑器
:q!
以下命令均可以在命令模式下使用:
光标移动和翻页操作 :
操作类型 | 光标操作键 | 功能 |
光标移动 | h | 向左移动光标 |
l | 向右移动光标 | |
k | 向上移动光标 | |
j | 向下移动光标 | |
翻页 | Ctrl + f | 向前翻整页 |
Ctrl + b | 向后翻整页 | |
Ctrl + u | 向前翻半页 | |
Ctrl + d | 向后翻半页 |
行内快速跳转 :
操作键 | 功能 |
^ | 将光标快速跳转到本行的行首字符 |
$ | 将光标快速跳转到本行的行尾字符 |
w | 将光标快速跳转到当前光标所在位置的后一个单词的首字母 |
b | 将光标快速跳转到当前光标所在位置的前一个单词的首字母 |
e | 将光标快速跳转到当前光标所在位置的后一个单词的尾字母 |
文件内行间快速跳转 :
命令 | 功能 |
:set nu | 在编辑器中显示行号 |
:set nonu | 取消编辑器中的行号显示 |
1G | 跳转到文件的首行 |
G | 跳转到文件的末尾行 |
#G | 跳转到文件中的第#行 |
进入输入模式 :
命令 | 功能 |
i | 在当前光标处进入插入状态 |
a | 在当前光标后进入插入状态 |
A | 将光标移动到当前行的行末,并进入插入状态 |
o | 在当前行的下面插入新行,光标移动到新行的行首,进入插入状态 |
O | 在当前行的上面插入新行,光标移动到新行的行首,进入插入状态 |
cw | 删除当前光标到所在单词尾部的字符,并进入插入状态 |
c$ | 删除当前光标到行尾的字符,并进入插入状态 |
c^ | 命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态 |
输入模式的编辑键操作 :
按键 | 功能 |
方向键 | 进行上下左右方向的光标移动 |
Home | 快速定位光标到行首 |
End | 快速定位光标到行尾 |
PageUp | 进行文本的向上翻页 |
PageDown | 进行文本的向下翻页 |
Backspace | 删除光标左侧的字符 |
Del | 删除光标位置的字符 |
删除操作 :
命令 | 功能 |
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命令,将对每个替换动作提示用户进行确认 |