Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1502815
  • 博文数量: 297
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3082
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 11:36
文章分类

全部博文(297)

文章存档

2011年(1)

2009年(45)

2008年(67)

2007年(184)

我的朋友

分类:

2008-01-29 14:47:17

() vi的常用操作
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视 窗设备,通过它可以编辑文件.基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:
1
Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode,Command mode下按iao三键就可进入Insert mode;:,?,/等键进入Last line mode.
2
Insert mode:唯一的功能即是输入文字数据,按Esc键可回到Comand mode

3
Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。按ESC键转换回Command mode.
不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,vi分成Command Insert mode。在系统提示符号输入vi及文件名称后,即可进入vi全屏幕编辑画面.
Insert mode       
i:插入,在目前的光标位置输入文字
I:该命令是将光标移到当前行的行首,然后在其前插入文本
a:用于在光标当前所在位置之后追加新文本
A:将光标移到所在行的行尾,从那里开始插入新文本
o:在光标下面插入一行
O:在光标所在行的上面插入一行
Command mode :
移动光标                
h 或←左                       
j 或↓下               
k 或↑上               
l 或→右
Ctrl+B:屏幕往后移动一页。
Ctrl+F
:屏幕往前移动一页。
Ctrl+U
:屏幕往后移动半页。
Ctrl+D
:屏幕往前移动半页。
Ctrl+E: 向后卷动一行
Ctrl+Y:向前卷动一行
0 (数字零):光标移动到该行的开头。
$:光标移到所在行的行尾。
G
:光标移动到最后一行的行首。
Ww:光标跳到下个word的开头。
e
:光标跳到下个word的字尾。
b
:光标回到上个word的开头。
^
:移到该行第一个非空白的字符。
~:改变字母大小写
数字+|:光标移到指定的字符,例如,7|表示将光标移到该行的第七个字符
Ctrl+g ctrl+G:在窗口的最后一行显示内容的总行数以及目前所在的行数
%:将光标停留在某个右括号或左括号,然后按%键,可以检查是否有相应的右括号或左括号
H:屏幕最上         
M:中央        
L:屏幕最下 
{:光标向前移动一个段落
}:光标向后移动一个段落
复制文字:
yy:复制光标所在行,复制后的部分并不会反色显示
yw 将光标所在位置的整个单字复制
p:将缓冲区内的字符粘贴到光标所在位置
数字+yy:如:6yy表示将目前光标所在位置以及其后的五行一起复制
数字+yw:如:2yw 表示将目前光标所在位置以及基后的两个字一起复制
“ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
“ap
:将放在buffer a的数据粘贴。

“b3yy
:将三行数据存入buffer b
“b3p
:将存在buffer b的资料粘贴
删除
x:删除光标所在位置的字符
X:大字的X,删除光标所在位置的前面一个字符。
数字+x:例如,6x 表删除光标所在位置及后方5个字符
数字+X:例如,20X 表删除光标所在位置的前面20个字符。
dd:删除光标所在行,按住d可以连续删除数行
数字+dd:例如,6dd表删除从光标所在的行及往下的5行的文字。
D:可删除同一行中光标所在位置之后的所有字符
dw::删除光标所在位置之后的一个单词,如果光标在某个词的中间,则从光标所在位置开始删至词尾并连同空格
ndw:删除n个指定的单词
db:删除光标所在位置之前的一个词
ndb:删除光标所在位置之前的n个词
d+←:可将光标所在位置的前一个字符删除
d+→:可将光标所在位置的字符删除
d+↑:可将光标所在位置的行与上一行同时删除
d+↓:可将光标所在位置的行与下一行同时删除
数字+ d+↑:删除指定的范围,如2d+↑,即可删除光标所在的行及上方2
数字+ d+↓:删除指定的范围,如2d+↓,即可删除光标所在的行及下方2
替换
r:替换某个位置的字符,先按r键,再输入要替换的字符,替换光标所指向的当前字符,按n继续查找下个要替换的字符
nrc:用字符c替换光标所指向的前n个字符
R:可以一直替换字符,直到按esc键才停止
撤销和重复
u :假如您误操作一个指令,可以马上按u,回复到上一个操作
U:取消对行所做的所有改变
。:重复执行上一个命令
搜索字符串
/str:往右移动到有str的地方
?str:往左移动到有str的地方
n:向相同的方向移动到有str的地方
N:向相反的方向移动到有str的地方
退出
ZZ:保存内容并退出
ZQ:不保存退出
Last line mode
跳行:
输入数字:如果直接输入数字再按回车键,可将光标移到该行的行首
退出:
q:退出
q!:强制退出
wq:保存并退出
文件相关:
e+文件名:新建立一个文件
n+文件名:加载另一个文件
w:保存文件
w file:将当前编辑的内容写到file文件中
nln2w file:将从n1开始到n2结束的行写到file文件中
nw file :将第n行写到file文件中
1,。w file:将从第一行起到光标当前位置的所有内容写到file文件中
。,$w file:将从光标当前位置起到文件结尾的所有内容写到file文件中
r file:打开另一个文件file
f file:把当前文件改名为file文件
字符串搜索,替换,删除
/str/:从当前光标开始往右移动到有str的地方
?str? :从当前光标开始往左移动到有str的地方
/str/w file:将包含有str的行写到文件file
/str1,str2/w file:将从str1开始到str2结束的内容写入 file文件中
s/str1/str2/g:将所有的str1替换为str2
s/str1/str2:将第一个str1替换为str2
。,$ s/str1/str2/g:将当前位置到结尾的所有的str1替换为str2
1$s/string/replae/g:在last line mode输入“1$s/string/replace/g”会将全文的string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认。
%s/string/replace/c
:同样会将全文的string字符串取代为replace字符串,和上面指令不同的地方是,%s1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
1,20s/string/replace/g
:将120行间的string替代为relpace字符串。
文本的复制,移动和删除
n1,n2 co n3:将从n1开始到n2为止的所有内容复制到n3后面
n1,n2 m n3:将从n1开始到n2为止的所有内容移动到n3后面
d:删除当前行
nd:删除从当前开始的n
n1,n2 d:删除从n1开始到n2为止的所有内容
。,$d:删除从当前行到结尾处的所有内容
/str1/,/str2/d:删除从str1开始到str2为止的所有内容
执行SHELL命令:
!Cmd:运行shell命令Cmd
n1,n2 w!:将n1 n2的内容作为Cmd命令的输入,如果不指定n1n2,则将整个文件的内容作为命令Cmd的输入
r!Cmd:将命令运行的结果写入当前行位置
设置VI环境
set autoindent:缩进每一行,使之与前一行相同,通常用于程序的编写
set noautoindent:取消缩进
set ruler:在屏幕底部显示光标所在的行,列位置
set noruler:不显示光标所在的行,列位置
set nu:在文件中的每行行首加入行号
set nonu:取消行号
阅读(1347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~