vi有三种模式:
命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。
插入模式
进行文件编辑,按ESC键可以回到命令行模式。
底行模式
光标卫浴屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等。
命令 | 功能 |
A a | (Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符 |
I i | (Insert)进入编辑状态,从光标之前的位置开始插入键盘输入的字符 |
O 0 | (Open)进入编辑模式,并插入一新行,光标移到该新行的行首,以后键盘输入的符号将插入到光标位置 |
ESC | 进入命令状态 |
:! Command | 在vi中执行外部命令Command,按回车键可以返回vi继续工作 |
命令 | 功能 |
:q | (Quit)退出没有修改的文件(若文件被修改了而没有保存,此命令无效) |
:q! | 强制退出,且不保存修改过得部分 |
:w | (Write)保存文件,但不退出 |
:x | (Exit)保存文件并退出 |
:w File | 另存为File给出的文件名,不退出 |
:r File | (Read)读入File指定的文件内容插入到光标位置 |
命令 | 功能 |
[N]x | (Expurgate)删除从光标位置开始的连续N个字符(并复制到编辑缓冲区) |
[N]dd | (Delete)删除从光标位置开始的连续N个字符(复制到编辑缓冲区) |
[N]yy | (Yank)复制从贯标位置开始的连续N行到缓冲区 |
p或P | (Put)从编辑缓冲区复制文本到当前位置(即粘贴) |
u | (Undo)取消上一次操作(即恢复功能) |
y0 | 将光标至行首的字符拷入剪切板(部分行) |
y$ | 将光标至行尾的字符拷入剪切板(部分行) |
d0 | 将光标至行首的字符剪切入剪切板 |
d$ | 将光标至行尾的字符剪切入剪切板 |
range y | 块复制 |
range d | 块剪切 |
命令 | 功能 |
h | 方向键,向左移动,相当于“←” |
j | 方向键,向下移动,相当于“↓” |
k | 方向键,向上移动,相当于“↑” |
l | 方向键,向右移动,相当于“→” |
:N | 移动光标到第N行(N待定) |
1G | 移动光标到文件的第1行 |
G | 移动光标到文件的最后1行 |
:set number | 设置显示行号 |
:set nonumber | 取消显示行号 |
vi的查找命令
/string查找字符串
n继续查找
N反向继续查找
支持正则表达式
vi替换命令
利用:s命令可以实现字符串的替换
:s/str1/str2
:s/str1/str2/g /*g全部替换(不加g替换第一个)*/
:s.,$s/str1/str2/g /*当前行*/
:1,$s/str1/str2/g /*全文*/
:%s/str1/str2/g /*全文*/