unix使用经验交流—vi(转)
网易虚拟社区 http://club.netease.com null
〖返回〗〖转发〗
unix使用经验交流
鉴于当前unix方面的书籍很多仅是翻译甚或抄袭,质量不高,而价格不菲,现根据使用经验,写出以下内容以供交流。欢迎大家任意转载使用。如果大家能有什么收获,我就很高兴了。如果有什么错误之处,或需要讨论的问题,欢迎大家来信。Mail:zhms@netease.com 。本人用过SGI IRIX,SUN OS,HP-UX及SCO UNIX,认为各种版本UNIX的工具基本上还是一致的,以下以SCO UNIX作为对象(因为现手边只有SCO UNIX)。
unix使用经验交流—vi(1)
对软件开发来说,工具并非关键的问题,但工具的使用对提高效率的作用是无可置疑的。
1. vi的常用设置:(编辑${HOME}目录下文件.exrc)
set ai 设置自动缩进
set sw=4 设置移动宽度
set ts=4 设置制表位置
2. vi的光标移动
h j k l 右下上左移动一个位置
w b e W B E 按单词移动
( ) { } 按句、段移动
$ ^ 0 行首、行尾
H M L 顶、中间、末尾
G | 给定行、列
Ctrl-U/F/D/B 滚动(半)屏
3. 文本的修改和删除
cw,c[n]w 字修改
c0,c$,cc,[n]cc 行修改
c{,c} 段修改
dw,d[n]w 字剪切
d0,d$,[n]dd 行剪切
d{,d} 段剪切
4. 移位
>>, [n]>> 一行和n行移位
5. 查找和替换
f[x],F[x],t[x],T[x],,,; 在行上查找字符
/[string],?[string] 全文查找字符串
r,R,s,S 替换字符,行
: [LineNum],[LineNums]/[old string]/[new string]/g
: [LineNum],[LineNums]?[old string]?[new string]?g
6. 移动和拷贝
: [LineNum,LineNum]m[LineNum] 移动
: [LineNum,LineNum]t[LineNum] 拷贝
yw, y[n]w 字拷贝
y(, y[n]c 句拷贝
yy,y[n]y 行拷贝
y{,y} 段拷贝
p,P 粘贴
7. 文件间拷贝
“[x](,”[x]),”[x]y{,”[x]y} 拷贝
“[x]p,”[x]P 粘贴
8. 其他
^v 输入控制字符
: r ![command] 读入
: w ![command] 写出
: [LineNum,LineNum] ![command] 过滤
总结:其实unix中的重要概念中有两个,正则表达式和管道组合对命令使用相当重要。关于正则表达式以后另讲。运用之妙,存乎一心。请大家多读手册页,本人就已多次通读vi的man了。
举例:对man重定向输出的处理
man ls >man_ls
vi man_ls
:%s/.^v^h//g
:x
可获得能阅读的文本。