Vi的使用
索引:
1.启动vi命令
命令 | 描述 |
---|---|
vi filename | 从第一行开始编辑文件 |
vi +n filename | 从第n行开始编辑文件 |
vi +filename | 从最后行开始编辑文件 |
vi +/pattern filename | 从包含pattern的第一行开始编辑文件 |
vi -r filename | 在系统崩溃之后恢复文件 |
vi -R filename | 以只读方式编辑文件 |
vedit filename | 在初学者模式下编辑文件 |
2.按测量单位移动光标
以下命令之前都可以加上一个数字表示重复因子:
命令 | 描述 |
---|---|
空格、l、右箭头键 | 以字符为单位向右移动 |
h或左箭头键 | 以字符为单位向左移动 |
w | 以词为单位向右移动 |
W | 以词为单位(单词以空格分隔)向右移动 |
b | 以词为单位向左移动 |
B | 以词为单位(单词以空格分隔)向左移动 |
$ | 移动到行尾 |
e | 移动到右边单词的结尾 |
E | 移动到右边单词的结尾(单词以空格分隔) |
0 | 移动到行开始(不能用重复因子) |
RETURN | 移动到下一行的开始 |
j或下箭头键 | 移动到下一行 |
- | 移动到前一行的开始 |
k或上箭头键 | 移动到上面一行 |
) | 移动到语句结尾 |
( | 移动到语句开始 |
} | 移动到段落结尾 |
{ | 移动到段落开始 |
% | 移动到位于同一嵌套层次的同类型匹配括号 |
3.查看工作缓存的不同部分
命令 | 描述 |
---|---|
Ctrl-d | 向前移动半个屏幕 |
Ctrl-u | 向后移动半个屏幕 |
Ctrl-f | 向前移动1个屏幕 |
Ctrl-b | 向后移动1个屏幕 |
nG | 到第n行(不指定n则到最后一行) |
H | 到屏幕顶部 |
M | 到屏幕中部 |
L | 到屏幕底部 |
4.添加文本命令
命令 | 描述 |
---|---|
i | 在光标前插入 |
I | 在该行的第一个非空白字符前插入 |
a | 在光标后插入 |
A | 在行尾插入 |
o | 在当前行之下开辟一个新行 |
O | 在当前行之上开辟一个新行 |
r | 替换当前字符 |
R | 替换从当前字符所开始的字符(直到按下escape为止) |
5.取消修改命令
命令 | 描述 |
---|---|
u | 取消最近一次操作 |
U | 恢复当前行为开始修改之前的状态 |
6.删除和修改文本
下表中M是测量单位,n表示重复因子,c为任意字符。
命令 | 描述 |
---|---|
nx | 从当前字符开始删除,n指定数目 |
nX | 从当前字符前一个字符开始删除n个字符 |
dM | 删除由M所制定的文本 |
ndd | 删除由n指定数目的行 |
dtc | 删除到位于当前行的下一个字符c |
D | 删除到行尾 |
n~ | 改变n个字符的大小写 |
7.替换和修改命令
命令 | 描述 |
---|---|
ns | 替换由n指定数目的字符 |
S | 替换整行 |
cM | 修改由M指定的文本 |
ncc | 修改由n指定数目的行 |
ctc | 修改到位于当前行的下一个字符c |
C | 修改到行尾 |
8.搜索字符串
命令 | 描述 |
---|---|
/rexp RETURN | 向前搜索rexp |
?rexp RETURN | 向后搜索rexp |
n | 重复最初的搜索 |
N | 重复最初的搜索,但方向相反 |
/RETURN | 向前重复最初的搜索 |
?RETURN | 向后重复最初的搜索 |
fc | 把光标移动到当前行的下一个字符c |
Fc | 把光标移动到当前行的前一个字符c |
tc | 把光标移动到当前行的下一个字符c的前面(位于它左边) |
Tc | 把光标移动到当前行的前一个字符c之后的字符(位于它右边) |
; | 重复最近一次的f、F、t、T命令 |
9.替换字符串
命令格式:
:[address]s/search-string/replacement-string[/g]
其中:
address:一个搜索字符串、一个行编号或者是由一个逗号所分隔的两个行编号。(.)表示当前行,($)表示最后行。
search-string:可以是单个字符的正则表达式。
replacement-string:替换字符串。
g:制定一个全局替换(每行不止替换一处)。
10.移出和放置文本
M是测量单位,n是重复因子,用户可以“x(其中x是缓冲区名称a~z)的形式将某个缓冲区名称加在这些命令之前。
命令 | 描述 |
---|---|
yM | 移出由M所指定的文本 |
nyy | 移出由n所指定数目的行 |
Y | 移出到行尾 |
p | 放置文本中某个位置之后或之下的位置 |
P | 放置文本中某个位置之前或之上的位置 |
11.其它命令
命令 | 描述 |
---|---|
J | 将当前行和前一行连接起来 |
. | 重复上一次的有效命令 |
:w filename | 将工作缓冲区内容写入filename文件 |
:q | 退出vi |
ZZ | 将工作缓冲区内容写入当前文件并退出vi |
:f或ctrl-g | 显示当前状态 |
Ctrl-v | 逐字插入下一个字符,即使它是一个vi命令(用于输入模式) |
mx | 设置标记x,其中x是a到z的字母 |
“ | 将光标移回到其前一个位置 |
‘x | 将光标移回到标记x所在行 |
`x | 将光标移回到标记x所在字符 |
:e filename | 编辑filename文件 |
:n | 当vi以多个文件名参数启动时编辑下一个文件 |
:rev | 当vi以多个文件名参数启动时,重新调整文件名列表,编辑第一个文件 |
sh | 启动一个shell |
:!command | 启动一个shell并执行一个命令 |
:!!command | 启动一个shell并执行一个命令,将命令输出替换当前行 |
12.设置参数set
13.映射命令map