设为首页 加入收藏

TOP

从C语言实战谈编程:vi(编辑源程序)下(一)
2014-11-24 00:11:56 来源: 作者: 【 】 浏览:43
Tags:语言 实战 编程 编辑 源程序

接上

第五步,学习多次操作命令

vi为了避免反复操作,vi设计了多次操作命令,操作为:操作次数+操作命令。这样大大提高了编辑的效率。

例如1:要删去50行。我们可以连续50次dd,但是,我们更应该利用多次操作命令,输入50dd就ok了!

例如2:要复制当前行以下的50行,我们可以键入:

1、50

2、yy

3、将光标移到第50行

4、p

这个命令非常非常有用,且考验编程者的眼力。比如,我们常常要编写一个while、for等循环语句或一个函数。我们往往会将以前的while、for等循环语句或函数拷贝过来,做些修改。而拷多少条语句这就要看编程者的眼力了。比如,实际要拷35条。而如果编程者认为这段语句是30条,则要重新再拷5条。如果编程者这段语句是40条,则要在拷贝后,删除5条。如果编程者一眼就能看出要拷35条,那就如同中奖一样的高兴。毕竟眼力准确可以减少额外的操作。

例如3,将hello myself 改成hi world

1、将光标移到hello

2、2

3、cw

4、hi world

5、Esc

上面的2表示将修改2个单词。

多次操作是一次操作的重复,不学多次操作,也可以通过一次一次操作完成,但是,超过2次,超过3次以上的操作,选择多次操作,可以大大提高编辑效率。

第六步,vi 命令行

vi不但在可以在编辑对象上进行各种操作,而且可以在vi的命令行上进行操作。这个命令行是通过键入“:”产生的,在文件的屏幕的最后一行。

我们的第一步中的,q命令,就是一个命令行的命令。

上面介绍的q!,x,x!命令都是命令行命令。

下面介绍一个有用行删除的命令。

假定文件内容为:

Hello world

Hello myself

Hello c

当前光标在第一行

1、现要求,将第二行到第三行删除。

方法1:将光标移至第二行,输入dddd。这个上面讲的一种方法。

方法2:

1,:

2,2,3d

这种方法是在命令行输入d命令。表示,从第二行到第三行都要删除。这种方法也叫绝对删除法。

方法3:

1,将光标移到第二行

2,:

3,.,+1d

这种方法也是命令行命令。表示从当前行(.)到当前行后面的一行(+1)进行删除。这种方法叫相对删除法。意思删除的行是相对于当前行的。

方法4:

1,当前光标在第一行

2,:

3,+1,+2d

这种方法上,表示,将第一行的下面一行到第一行下面的第二行之间全部删除。

方法5:

1,:

2,2,$d

这种方法表示将第二行,到文件的最后一行都删掉。$表示文件的最后一行。这个命令也十分有用。

如果我们不知道我们当前行是哪一行,我们可以键入:ctrl-g,这个时候,命令行就会出现提示:The cursor is at line 1 of 3—33%--,就可以看到当前行是第几行,整个文件有多少行了。其中1是当前行,3是所有的行。

Ctrl-g也是很常用的命令。

在vi长期实践中,相对法用于删除20行之内语句比较有效,快捷;绝对法用于删除大批语句有效。

2、替换所有hello 为hi

1,:

2,1,$s/hello/hi/g

我是这样理解这个命令的:从第一行到最后一行,查到(s)hello用hi来全部(g)替换。这样今后就忘不了了。

第七步,读文件,写文件

前面都是基于语句级、单词级的编辑。在我们初学vi的时候,十分有用,在我们编写少量的C语言时候,也很有用,也足够了。但是,当我们编写的C语言程序越来越多的时候,我们看到的别人C语言程序越来越多的时候,我们往往会复制别人的程序和自己的程序,会复制某一段成程,用在自己的程序之中。这个时候,我们就会出现一个以文件级程序“复制、粘贴”的操作。

例如,我们要将a.c中的open_deal这个函数,拷贝到b.c中。

1,vi a.c

2,/open_deal

3,n

4,ctl-g

5,记下当前行,假定243

6,将光标移到open_deal最后一行

7,ctl-g

8,记下当前行,假定343

9,:

10,243,343w open.c

11,q!

12,vi b.c

13,将光标移动open_deal要放的地方那一行。

14,:

15,r open.c

16,:

17,x!

这个例子,有两个重点,一个是243,343w open.c.这个操作说明,将第243行到343行的open_deal函数程序,写到open.c文件之中。

另个重点是,r open.c,这个操作说明,将open.c 读到当前行之下。

通过w和r我们完成了函数的复制和粘贴。

很多情况下,我们会将整个文件r进来,在进行修改的。

此外,很多情况下,我们会起找一下我们过去的程序,去找一下某一个我们想要的函数,和一些语句的用法,但是,我们又不知道在那个文件之中。这个时候,我们可以通过同时打开多个文件的方法,一个一个文件去查看是否有我们想要的东西,一旦发现,我们就会知道这个函数在那个文件之中了。

例如,假定我们的目录下,有a1.c,a2.c,a3.c,b1.c,b2.c,b3.c六个文件,我们记得其中有一个名为open_deal函数,我们想改造这个函数,但是,我们不知道这个函数在什么文件之中。这时候我们可以这样操作。

1,vi *.c

2,/open_deal

3,:n

4,/open_deal

直到找到为止。

这里重点有2个,一是vi *.c,表示编辑所有的.c文件;二是,:n(next)读下一个文件。

找到open_deal之后,你可以通过w命令,将函数写成一个文件,以便以后r用。

学习vi一定要从简单到复杂,从第一步到第七步要慢慢而来,不要着急,一口吃个胖子。第一步到第四步是入门和基础,了解需要半天到一天,操作练习估计要2天到3天,后面几步也要3天左右。有人在旁,估计1周掌握vi应该不成问题。但是要精通vi则是很难给出一个时间的。我可以肯定地说,如果你能掌握这7个步骤,几乎所有的C语言的编写是没有问题的(编辑方面)。

四、Vi命令小结

将我认为的vi常用的命令小结一下,便于大家查询(其他命令因为很少用,我就不列举在其中了,想学的可以去网上查询。)

1、 进入和退出vi

1)vi 文件名 编辑一个文件。

2)vi *.c 编辑多个文件。

3):q 退出vi(不保存退出,文件没有被编辑过)。

4):q! 退出vi(不保存退出,文件被编辑过)。

5):x 退出vi(保存退出)。

6):x! 退出vi(保存退出,文件被编辑过)。

2、 增加、修改、删除、查询、取消命令

1)i 在当前字符前插入,Esc退出插入状态

2)I 在行首插入,Esc退出插入状态

3)a 在当前字符后插入,Esc退出插入状态

4)A 在行尾插入,Esc退出插入状态

5)o 在当前行下面插入,Esc退出插入状态

6)O 在当前行上面插入,Esc退出插入状态

7)

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇从C语言实战谈编程:vi(编辑源程.. 下一篇ansi utf8与unicode互转函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: