[推荐]vi全屏幕编辑器[推荐]

发表于:2007-06-09来源:作者:点击数: 标签:
虽然用得不熟,还是推荐大家学习*^_^* vi全屏幕编辑器 vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode): command方式: ?任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映 insert方式:

虽然用得不熟,还是推荐大家学习*^_^*

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??????? 告诉用户有关现行编辑文件的数据。


 tiaozao 回复于:2002-01-08 14:43:21
不错

 shirley 回复于:2002-01-08 15:20:00
system,给这篇文章加个"*"吧!值得一读。
bear,是你自己整理出来的吗?

 pierce 回复于:2002-01-08 16:49:35
如果要Undo前n次操作怎么办??

 bear 回复于:2002-01-08 17:13:47
多谢大家“错爱”,并不是我整理的,来源我也不记得了,所以没有注明出处,我只会用其中30%的命令,主要是推荐给只能用字符界面操作的网友,有图形界面的时候编辑大量文本我都不用,拷贝、粘贴等用鼠标操作简单,但肯定没有VI的命令高效!我不是打字员*^_^*。

 sopato 回复于:2002-01-09 09:44:04
不错,很好用。现在的我也只能用其中的25%左右。

 yxzforever 回复于:2002-01-09 11:08:45
用久了就觉得很方便,甚至不习惯Office了

 bear 回复于:2002-01-09 11:18:23
因为VI是所有UNIX上的通用编辑器,所以用熟了就不怕跨平台了。

 purepig 回复于:2002-01-09 11:55:54
还不如用emacs~~总感觉vi为了跨平台~牺牲了太多的易用性.
emacs在很多平台上也有阿~而且还有windows版本

 bear 回复于:2002-01-09 13:07:25
vi应该是在跨平台之前出来的吧,应该跟平台没有什么关系,只是有没有设计进去。

 enterprise 回复于:2002-02-20 17:53:02
[这个贴子最后由enterprise在 2002/02/20 05:54pm 编辑]

刚看书,我补充点:
starting 
 vi -r filename 恢复被毁坏的文件
 view filename 打开文件只读
        下班了,回家在接着写,呵呵

 liuwater 回复于:2002-02-21 12:50:48
vi can be used in many platforms, such as OS, solaris, Linux


 liuwater 回复于:2002-02-21 12:59:54
VIM is another good edit tools, especially in program.

如果要Undo前n次操作怎么办??
I think it's no way.. So i copy a bak before editing.
 

 kiss007 回复于:2002-04-05 20:00:03
想学unix,首先要掌握vi。

 joy 回复于:2002-04-08 11:13:57
太棒了。

 mmmmn 回复于:2002-04-08 11:32:43
呵呵,楼上vi -r filename 不是万能的,它只是把在缓冲的内容写回去。如果你的缓冲中没有的,怎么都不行了。

 wd302 回复于:2002-04-08 13:57:06
谢谢bear斑竹,我要认真学习学习。

原文转自:http://www.ltesting.net