Vi的基本模式
Vi编辑器具有三种工作模式,分别 是命令行模式(command mode)、插入模式(insert mode)和底行模式(last mode)。
1、命令行模式
- 在命令行模式(command mode)下用户可以输入命令来控制屏幕光标的移动,删除字符、单词或行,移动复制某区段,也可以进入到底行模式或者插入模式。
2、插入模式
- 用户 只有在插入模式(insert mode)下才可以进行字符输入,用户按[Esc]键可回到命令行模式下。
3、底行模式
- 在底行模式(last mode)下,用户可以将文件保存或退出vi,也可以设置编辑环境,如查找字符串、显示行号等。这一模式下的命令都是以“ :”开始。
Vi的基本操作
命令行模式、底行模式转为插入模式
特征 | 指令 | 作用 |
新增 | a | 从光标所在的位置后面开始新增资料,光标后的资料随新增资料向后移动 |
A | 从光标所在列最后面的地方 开始新增资料 | |
插入 | i | 从光标所在的位置前面开始插入资料,光标后的资料随新增资料向后移动 |
I | 从光标所在列的第一个非空白字符前面开始新增资料 | |
开始 | o | 在光标所在列下方新增一列,并进入插入模式 |
O | 在光标所在列上方新增一列,并进入插入模式 |
vi的删除/剪切、修改与复制指令
特征 | 指令 | 作用 |
剪切 | nx | 剪切从光标所在的字符开始的n个字符 |
ncb | 剪切光标所在的前n个单词 | |
ncw | 剪切光标所在的后n个单词 | |
c$ | 剪切自光标所在的字符到行尾的所有字符 | |
ndd | 剪切自光标所在的行开始 n行,若到文章结尾不够n行,则剪切到最后一行 | |
s | 删除光标所在的字符,并进入输入模式 | |
S | 删除光标所在的行,并进入输入模式 | |
修改 | r待修改字符 | 修改光标所在的字符,键入r 后直接键入待修改字符 |
R | 进入取代状态,可移动光标键入所指位置的修改字符,该取代状态直到按 [ Esc ]键才结束 | |
复制 | nyb | 复制光标所在的前n个单词 |
nyw | 复制光标所在的后n个单词 | |
y$ | 复制从光标所在的字符到行尾的所有字符 | |
nyy | 复制光标自所在的行开始,向下的n行 | |
p | 将缓冲区内的字符粘贴到光标所在位置 | |
u | 取消上一次的文本编辑操作 |
vi中光标移动的指令
指令 | 作用 | 指令 | 作用 |
0 | 移动到光标所在行的最前面 | h | 光标向前移动一个字符 |
$ | 移动到光标所在行的最后面 | l | 光标向后移动一格字符 |
Ctrl + d | 光标向下移动半页 | k | 光标向上移动一行 |
Ctrl + f | 光标向下移动一页 | j | 光标向下移动一行 |
H | 光标移动到当前屏幕的第一行第一列 | e | 移动到下一个字的最后一个字母 |
gg | 光标移动到当前屏幕的第一行第一列 | ^ | 移动到光标所在行的第一个非空白字符 |
M | 光标移动到当前屏幕的中间行第一列 | n- | 向上移动 n 行 |
L | 光标移动到当前屏幕的最后行第一列 | n+ | 向下移动 n 行 |
b | 移动到上一个字的第一个字母 | nG | 移动到第 n 行 |
w | 移动到下一个字的第一个字母 | :n | 光标移动到第 n 行 |
vi的查找与替换指令
特征 | 指令 | 作用 |
查找 | /<要查找的字符> | 向下查找要查找的字符 |
?<要查找的字符> | 向上查找要查找的字符 | |
替换 | :rang s/string1/string2/gc | range :要替换的范围 |
s :转入替换模 | ||
string1 :这是要查找的一个正则表达式 | ||
string2 :这是希望把匹配串变成的模式的正则表达式 | ||
g :可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换换行中第一个匹配串 | ||
c :可选标志,表示替换前询问 |
- 百分号(%)表示行;
- 点(.)表示当前行;
- 美元符号($)表示末行
在进行剪切复制和黏贴操作时,也可以带上范围,即按快操作。
range y 块复制。
举例如下:
- :10,20y 表示复制第10行到第20行
- :.,$y 表示复制当前行到文章最后一行
range d 块删除。
举例如下:
- :10,20d 表示删除第10行到第20行
- :.,$d 表示删除当前行到文章最后一行
vi的文件操作指令
指令 | 作用 | 指令 | 作用 |
:q | 结束编辑 | :wq | 保存文档并退出 |
:q! | 不保存编辑过的文档 | :zz | 功能与“:wq”相同 |
:w | 保存文档,其后可加要保存的文件名 | :x | 功能与“:wq”相同 |