免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1064 | 回复: 4
打印 上一主题 下一主题

vi的使用[转载] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-15 10:53 |只看该作者 |倒序浏览
vi编辑器的使用
--------------------------------------------------------------------------------
vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):

command方式:
?任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入
?都引起立即反映

insert方式:
?任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,??insert方式下按ESC,可跳回command方式。

escape方式:
以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。

进入vi(在系统提示符下面输入以下指令):
vi                    进入vi而不读入任何文件
vi filename           进入vi并读入指定名称的文件(新、旧文件均可)。
vi +n filename        进入vi并且由文件的第几行开始。
vi +filename          进入vi并且由文件的最后一行开始。
vi + /word filename   进入vi并且由文件的word这个字开始。
vi filename(s)        进入vi并且将各指定文件列入名单内,第一个文件先读入。
Vedit                 进入vi并且在输入方式时会在状态行显示“INSERT MODE"。

编辑数个文件(利用vi filename(s))进入vi后)
:args                    显示编辑名单中的各个文件名
:n                       读入编辑名单中的下一个文件
:rew                     读入编辑名单中的第一个文件
:e#                      读入编辑名单内的前一个文件
:e file ???????   读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。
:e! file                 强迫读入另一个文件进入vi,原文件不作存档动作。

存储及退出vi
:w filename           存入指定文件,但未退出vi(若未指定文件名则为当前工作的文件名)。
:wq 或者 或者zz     存文件,并且退出vi.
:q                    不作任何修改并退出vi。
:q!                   放弃任何修改并退出vi。
:!command             暂时退出vi并执行shell指令,执行完毕后再回到vi。
:sh                   暂时退出vi到系统下,结束时按Ctrl + d则回到vi。

加数据指令
i                    在关标位置开始插入字符,结束时候按ESC键。
I                    在光标所在行的最前面开始加字,结束时按ESC键。
A                    在光标位置后开始加字,结束时按ESC键。
A                    在光标所在行的最后面开始加字,结束时按ESC键。
O                    在光标下加一空白行并开始加字,结束时按ESC键。
O                    在光标上加一空白行并开始加字,结束时按ESC键。
!command             执行shell指令,并把结果加在光标所在行的下一行。

删除指令
nx                    删除由光标位置起始的n个字符(含光标位置,按一个x表示删除光标所在的字符)
nX                    删除由光标位置起始的n个字符(不含光标位置)。
Ndw                   删除光标位置其实的n个字符组(word)。
d0                    将行的开始到光标位置的字符全部删除。
d$ 或D                将光标位置起始到行尾的字符全部删除。
ndd                   将光标位置起始的n行(整行)删除(dd表示删除光标所在行)。
:start,endd           删除文件的第start到end行。

关标移动
0                     移到一行的开始
$                     移到一行的最后
[                     移到文件开始位置
]                     移到文件结束位置
nh                    往左移n位
nl或者spacebar        往右移n位
nk                    向上移n行
n+                    向上移n行,光标在该行的起始
ni                    向下移n行
n-                    向下移n行,光标在该行的起始
H                     移到屏幕的左上角
M                     移到屏幕的中间行开头
L                     移到屏幕的最后一行
G                     移到文件的最后一行
nG或者:n              移到文件的第n行
nw                    右移n个字组,标点符号属于字组
nW                    右移n个字组,标点符号不属于字组
nb                    左移n个字组,标点符号属于字组
nB                    左移n个字组,标点符号不属于字组
Ctrl + u              屏幕上卷半个菜单
Ctrl + d              屏幕下卷半个菜单
Ctrl + b              屏幕上卷一个菜单
Ctrl + F              屏幕下卷一个菜单

修改指令
r                      修改光标文件的字符
R                      从光标位置开始修改,结束时按ESC键
new                    更改n组字符,结束时按ESC键
ncc                    从光标所在位置开始更改n行,结束时按ESC键

重排各行长度
i                         并按Enter将该行由光标所在处断开,并进入insert方式
J                         把下一行的数据连接到本行之后

寻找指令
/text                     从光标位置往下找字串text
?text                     从光标位置往上找字串text
n                         继续找下一个字串(在输入上面的寻找指令之后使用)

寻找并且取代指令
:getxt1/s/ /text2/options       将各行的text1替换为text2
option=g                        表示文件中所有的text1均被取代,若未输入任何option,则只有各行中的第一个出现的text1被取代
option=go                       在屏幕显示各取代的行
option=gc                       在每个字串取代之前要求确认?
Start,endgtext1/s/ / text2/options   同上,只寻找并取代第start~end行。
或:Start,ends/text1/text2/options

复制及移动文件
:first,last co dest          将first 到last行的数据复制到目标行(dest)下面
:Start,end?m dest           将start 到 end行的数据移动到目标行(dest)下。???
:r filename                  将指定文件的内容读入光标所在行下。
nY                           将光标所在位置开始的n行数据暂存
p                            复制暂存数据在光标的下一行
P                            复制暂存数据在光标的上一行

其他命令
.                            重复前一指令
u                            取消前一指令
Ctrl + l                     刷新屏幕显示
:set number                  显示文件的行号,但不会存文件
:set nonumber                解除行号显示
:set ai                      设置每行起始位置(以光标当前位置为起始)
:set noai                    取消行起始位置设定
:f 或<Ctrl> + g              告诉用户有关现行编辑文件的数据。

论坛徽章:
0
2 [报告]
发表于 2004-04-15 20:20 |只看该作者

vi的使用[转载]

:e! 当前文件,还原到前次存盘的状态

论坛徽章:
0
3 [报告]
发表于 2004-04-15 20:22 |只看该作者

vi的使用[转载]

删除整行(d)和删除字符(x)后用p的效果是不同的,可以试一下。

论坛徽章:
0
4 [报告]
发表于 2004-04-15 20:24 |只看该作者

vi的使用[转载]

移到一行的开始是^

论坛徽章:
0
5 [报告]
发表于 2004-04-15 20:32 |只看该作者

vi的使用[转载]

补充一些:
U 还原整行所有的修改
o 向下加空行,并输入
O 向上加空行,并输入
a 当前光标后开始输入
A 当前行最后开始输入
b 光标移到上一个词的开头
w 光标移到下一个词的开头
(也许可以试一下B,W,nb,nw,我没试过,刚想到的。)

实际上有很多的是可以试一下的。
如:
数字+操作(dd,l,k)
操作+$,^
大小写往往是相反的操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP