文章目录
1.Vi的基本概念
vi 可以分为三种基本模式分别为 命令模式(command mode)、插入模式(Insert mode)和末行模式也有的叫底行模式
(last line mode)
注意:这并不是说vi只有三种模式
(1)命令行模式
可以控制屏幕光标的移动,字符、字或行的删除
(2)插入模式
按 i 键进入插入模式 ,可以对文本进行修改操作,按esc可以回到命令行模式
(3)底行模式
按:(冒号)进入底行模式,用于将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号、跳到n行等等操作。
显示行号:set number
隐藏行号:set nonumber
2.操作
(1)命令行模式
1.光标移动
a、字符
左(h) 下(j) 上(k) 右(l)
b、单词
命令 | 操作 |
---|---|
w | 移动到下个单词首字母 |
b | 移动到上个单词首字母 |
e | 下个单词结尾 |
c、行
命令 | 操作 |
---|---|
0 | 行首 |
^ | 行首,第一个不是空白字符的位置 |
$ | 行尾 |
d、段落
{ 上一段
} 下一段
e、屏幕
H 屏幕顶部
M 屏幕中间
L 屏幕底部
f、文档
命令 | 操作 |
---|---|
G | 文档尾部 |
nG | 文档第n行 |
gg | 文档第一行 |
crtl+f 或 pagedown | 向下翻页 |
crtl+b 或 pageup | 向上翻页 |
n+enter | 向下移动n行 |
:数字 | 通过底行模式移动到数字对应的行数 |
2.内容删除
命令 | 操作 |
---|---|
d(移动命令) | 删除移动命令对应的内容 |
dd | 删除当前行 |
D | 删除至行尾 |
x | 删除当前字符 |
cw | 删除光标所在字母后面的字符 |
dw | 从光标位置删除到单词末尾 |
d0 | 从光标位置删除至一行的起始位置 |
d} | 从光标位置删除到段落末尾 |
ndd | 自当前行向下删除n行 |
3.内容复制与剪切
命令 | 操作 |
---|---|
d | 剪切 |
dd | 剪切一行 ,可以ndd剪切n行 |
yy | 复制光标当前行 |
nyy | 自当前行复制n行 |
p | 对(删除)复制的内容进行粘贴 |
4.撤销和恢复撤销
命令 | 操作 |
---|---|
u | 撤销 |
. | 重复上次操作 |
ctrl+r | 恢复撤销的命令 |
(2)插入模式
- 在 vi 中除了常用
i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
(3)底行模式
命令 | 英文 | 功能 |
---|---|---|
:w | write | 保存 |
:q | quit | 退出,如果没有保存,不允许退出 |
:q! | quit | 强行退出,不保存退出 |
:wq | write & quit | 保存且退出(末行模式) |
:x | 保存并退出(末行模式) | |
:ZZ | 保存并退出(命令模式) |
(4)替换与查找
①替换
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下ESC
可以回到 命令模式- 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
②查找
常规查找
命令 | 功能 |
---|---|
/str | 查找str |
-
查找到指定内容之后, 使用
Next
查找下一个出现的位置n
: 查找下一个N
: 查找上一个
-
如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
-
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
- 在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过
③ 查找并替换
- 在
vi
中查找和替换命令需要在 末行模式 下执行 - 记忆命令格式
:%s///g
- 全局替换
-
一次向 替换文件中的 所有出现的旧文本
-
命令格式如下
:%s/旧文本/新文本/g
- 可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下
:s/旧文本/新文本/g
- 确认替换
c confirm 确认
-
如果把末尾的
g
改成gc
在替换的时候, 会有提示! 推荐使用 -
命令格式如下
:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏
提示:
- 在开发中, 可能会遇到连续输入 N 个同样的字符
- 例如:
**********
连续10个星号
要实现这个效果可以在 命令模式 下
- 输入
10
, 表示要重复10次 - 输入
i
进入 编辑模式 - 输入
*
也就是重复的文字 - 按下
ESC
返回 命令模式, 返回之后vi
就会把 第2、3
两步的操作重复10
次
提示: 正常开发时, 在 进入编辑模式之前,不要按数字
最后:1.如果有写的不对的地方欢迎各位大神给我留言,本人看到后会及时修改
2.如果因为出错而为您带来不便敬请见谅,同时希望及时给我留言!