vi 简介( 二 )


例如: 删除10行 :10dd
复制10行 :10yy
取消前一动作(undo):即复原执行上一指令前的结果 。
u 恢复最后一个指令之前的结果 。
U 恢复游标该行之所有改变 。
搜寻:在vi中可搜寻某一字串,使游标移至该处 。
/字串 往游标之后寻找该字串 。
?字串 往游标之前寻找该字串 。
n 往下继续寻找下一个相同的字串 。
N 往上继续寻找下一个相同的字串 。
资料的连接:
J 句子的连接 。将游标所在之下一行连接至游标该行的后面 。
若某行资料太长亦可将其分成两行,只要将游标移至分开点,进入输入模式(可利用a、i等指令)在按《ENTER》即可 。
使用vi【vi 简介】作为Unix最重要的编辑工具,熟练的掌握vi对于开发人员和系统管理员同样的重要 。下面是我的vi的使用经验,希望能够对大家有所帮助 。
一.我们先看一下vi的设置项 。
ignorecase/noignorcase 忽略/不忽略大小写
tabstop=n 设置tab相当于n个空格
list/nolist 显示/不显示制表符
number/nonumber 显示/不显示行号
二.vi的编辑命令
ndd或nD 删除n行
nyy 拷贝n行
ma 定义宏,使用"a调用
“a 定义缓冲区
/string 查找string字符串
s/old_str/new_str/g 用new_str串替换old_str
. 重复上一次操作/光标所在行
ctrl g 在屏幕底显示文件信息
shift g 到文件尾
shift a 到行尾
shift i 到行首(最先面的字符)
ctrl f/ctrl d 向下翻一屏/半屏
ctrl b/ctrl u 向上翻一屏/半屏
h/l/j/k 向前/后/下/上移动
u 恢复上一个操作
e filename 编辑另一个文件
e# 切换会上一个文件
n 当一次编辑多个文件时,编辑下一个文件;也可以
是重复上一个查找
r filename 从filename中读内容到光标的下一行
w filename 将当前文件的内容写到filename中
sh 暂退出编辑文件,但此文件仍处于编辑状态,
用exit或ctrl d回到编辑文件
! 在编辑状态下,执行shell命令
!! 重复执行上一个shell命令
^ 表示行首
$ 表示行尾
g line_no 到line_no行
shift 5 扩号的匹配(包括小扩号,大扩号,中扩号)
n<> 将n行向左/右移动一个tab键的距离的位置
cw 替换一个词
三.举例
1.删除文件中的几行
到删除的开始处 ma
到删除的结束处 d"a
2.拷贝文件中的几行
到拷贝的开始处 ma
到拷贝的结束处 y"a
3.替换文件中所有匹配的字符
替换文件中的 lesson为course
s/lesson/course/g
注意:可能替换含有lesson的其他词
4.替换文件中一个区域的字符
start_line, end_line %s/lesson/course/g 或者
采用宏的方式
‘a,. %s/lesson/course/g #需要定义宏;"."是指光标所在行
5.替换一个文件中某些词
比如替换none为nothing
查找 /none
替换 cw,输入nothing,按键盘Esc
继续查找 n
替换 .
6.重复执行一个shell命令
编译一个程序
保存编辑后的文件 :w
编译文件 :!make
修改文件后,在保存 :w
再编译 :!!
7.在两个文件互拷贝
第一种方法:
编辑源文件 vi source_file
到拷贝的部分开始处 ma
到拷贝的部分结束处 :.,"a w tempfile
退出当前文件 :q
编辑目的文件 vi dest_file
到拷贝的地方 :r tempfile
第二种方法:
编辑源文件 vi source_file
到拷贝的部分开始处 ma
到拷贝的部分结束处 “ay"a
不退出源文件编辑目的文件 :e dest_file
到拷贝的地方 “ap

推荐阅读