模式说明
vi有三种模式:
- 一般指令模式
- 编辑模式
- 命令行模式
注意:以下的模式切换案件都要是英文的,中文的是不生效的
一般指令模式
vi打开文件之后,默认就是在一般指令模式。
常用操作:
移动光标
按键 | 操作 |
---|---|
h、⬅ | 向左移动光标 |
j、⬇ | 向下移动光标 |
k、⬆ | 向上移动光标 |
l、→ | 向右移动光标 |
数字k | 向上移动指定数字行数,其他方向依次类推 |
ctrl + f | 向下翻页 |
ctrl + b | 向上翻页 |
ctrl + d | 向下移动半页 |
ctrl + u | 向上移动半页 |
+ | 移动到非空白字符的下一行 |
- | 移动到非空白字符的上一行 |
0 | 移动到这一行最开始 |
$ | 移动到这一列最后 |
G | 移动到文档最后 |
gg | 移动到文档最开始 |
n<enter> | 向下移动n 行 |
搜索与替换
按键 | 操作 |
---|---|
/word | 在文档中查找光标之下的word 字符串 |
n | 查找下一个word |
N | 查找上一个word |
:1,$s/word1/word2/g | 从文档开始到结尾,将word1 替换为 word2 |
:1,$s/word1/word2/gc | 从文档开始到结尾,将word1 替换为 word2 ,替换时候需要用户确认 |
:n1,n2s/word1/word2/g | 在文档n1 到 n2 行中,将 word1 替换为 word2 |
删除、复制与粘贴
按键 | 操作 |
---|---|
x | 删除一行中的后一个字符 |
X | 删除一行中的前一个字符 |
nx | n为数字,表示连续向后删除n个字符,例如:向后删除10个字符:10x |
dd | 删除光标所在一整行 |
ndd | 删除光标所在的向下n 行,例如要删除20行:20dd |
d1G | 删除光标所在行所有的数据 |
dG | 删除光标所在行到最后的数据 |
d$ | 删除该行中光标所在位置之后的所有字符 |
d0 | 删除改行中光标所在位置之前的所有字符 |
yy | 赋值光标所在行的内容 |
nyy | 从所在行开始,向下复制n行,例如复制之后20列:20yy |
y1G | 复制当前行以及之前的所有内容 |
yG | 复制当前行到最后的所有内容 |
y0 | 复制光标当前位置到行首的所有内容 |
y$ | 复制光标所在位置到行尾的所有内容 |
p | 向下粘贴复制内容 |
P | 向上粘贴复制内容 |
u | 撤销;复原上一个动作 |
ctrl + r | 反撤销 |
.(点) | 重复上一个动作 |
进入编辑模式
按键 | 操作 |
---|---|
i | 在光标当前位置开始编辑 |
I | 在光标所在行第一个非空白字符编辑 |
a | 在光标所在位置下一个字符进行编辑 |
A | 从光标所在行最后一个字符开始编辑 |
o | 在光标所在行下一行插入一行开始编辑 |
O | 在光标所在行上一行插入一行开始编辑 |
r | 替换光标所在位置的一个字符 |
R | 一直替换光标所在位置的字符,直到按下esc 为止 |
esc | 退出编辑模式,返回到一般指令模式 |
编辑模式
在一般指令模式下按下:i,o,a 等可以进入编辑模式,在编辑模式下可以编辑文本,在编辑模式下,左下角会有 -- INSERT --
字样。
按esc
键返回一般命令模式,左下角的 -- INSERT --
也会消失
编辑模式,就是在文本里输入内容呀!
命令行模式
命令行模式主要针对文件进行一些指令操作,比如:保存(w),退出(q)
在一般指令模式
下按下 :
就可以进入命令行模式了。在命令行模式下可以输入一些指令。
指令 | 作用 |
---|---|
:w | 将编辑的内容保存到硬盘中 |
:w! | 强制写入 |
:q | 退出 |
:q! | 不保存退出 |
:wq | 保存并推出 |
:ZZ | 若灭有改动,则不保存退出,若改动了则保存退出 |
:w filename | 将文件另存为filename |
:r filename | 将filename 的内容读取到当前位置 |
:n1,n2 w filename | 将n1 到 n2 行的内容写入到filename 文件中 |
:! command | 暂时离开vi 到命令行下执行command 命令的显示结果 |
set nu | 显示行号 |
set nonu | 不显示行号 |