Duangw

Vi的使用

索引:

  1. 启动vi命令
  2. 按测量单位移动光标
  3. 查看工作缓存的不同部分
  4. 添加文本命令
  5. 取消修改命令
  6. 删除和修改文本
  7. 替换和修改命令
  8. 搜索字符串
  9. 替换字符串
  10. 移出和放置文本
  11. 其它命令
  12. 设置参数set
  13. 映射命令map

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