1、进入vi
进入编辑文件:vi filename,如果文件不纯在,则创建并编辑;
2、vi三种模式
命令模式、插入模式、底行模式
| 模式 | 进入方式 | 操作 |
|---|---|---|
| 命令模式 | ESC进入 | dd:删除 |
| 2dd:删除两行 | ||
| D:从光标删除到行尾 | ||
| p:粘贴 | ||
| u:恢复,返回 | ||
| “.” : 重复前一命令 | ||
| 插入模式 | i:光标前插入 | |
| a:光标下一个插入 | ||
| I:行首插入 | ||
| A:行尾插入 | ||
| o:下一行插入 | ||
| O:上一行插入 | ||
| 底行模式 | shift+:进入 | |
| q:结束编辑 | ||
| q!:强制退出,不保存 | ||
| w:保存不退出 | ||
| w filename:将编辑内容存为名filename的文件 | ||
| wq:保存退出 | ||
| x:若有修改存盘,退出程序 | ||
| e filename:编辑名为filename的文件 | ||
| set nu:显示行号 | ||
| set nonu:不显示行号 | ||
| ESC:回到命令模式 |
3、vi常用命令
命令模式下
1. 光标移动
| 光标移动 | |
|---|---|
| h | 左移 |
| j | 右移 |
| k | 上移 |
| l | 下移 |
| 0 | 移至行首 |
| $ | 移至行尾 |
| G | 移至文件最后一行 |
| ctrl+F | 向后翻一页 |
| ctrl+B | 向前翻一页 |
命令模式下
2. 删除修改
| 删除与修改 | |
|---|---|
| x | 删除光标后字符 |
| X | 删除光标前字符 |
| dd | 删除光标所在行 |
| ndd | 删除包括光标所在行的n行文本 |
| r | 修改光标所在的字符 |
| R | 进入替换状态,直到按Esc键回到命令模式为止 |
| s | 删除光标所在字符,并进入插入模式 |
| S | 删除光标所在行,并进入插入模式 |
| u | 恢复刚才被修改的文本 |
| U | 恢复光标所在行的所有修改 |
| . | 重复上一次命令的操作 |
命令模式下
3. 复制
| 复制 | |
|---|---|
| Y | 复制到当前行至编辑缓冲区 |
| nyy | 恢复当前行开始的n行至编辑缓冲区 |
| p | 将编辑缓冲区的内容粘贴到光标后的一行 |
| P | 将编辑缓冲区的内容粘贴到光标前的一行 |
4、搜索与替换
在底行模式下
1. 搜索
| 搜索 | |
|---|---|
| /string | 用n搜索下一个 |
| 例: | /asdf |
| ?string | 用n搜索下上个 |
| 例: | ?asdf |
2. 替换
全文替换:%s/old/new/[c,g,i]
例:%s/asd/zzz/g
%s:全文搜索
部分替换::n1,n2s/old/new/[c,g,i]
例:2,3s/asd/zzz/g
n1:从n1开始,到n2结束
s:搜索
| 参数 | |
|---|---|
| c (confirm) | 每次替换前会询问 |
| g (globe) | 不询问,整行替换 |
| i (ignore) | 不分大小写 |
| I (ignore) | 大小写敏感 |
277

被折叠的 条评论
为什么被折叠?



