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 
可获得能阅读的文本。 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐