你可以试着编辑一个b.c 内容是hello myself!看看行吗?
第三步,学习修改、删除。
我们在编辑程序的时候,不可能一次增加就能完成。总是要修改,删除,增加。接上面的例子,我们要将a.c中的hello world!改成hello myself。
第一种方法:
1、vi a.c
2、dd
3、i
4、hello myself。
5、Esc
6、:
7、x
这种方法是同过dd命令将原来一行删掉,再通过i命令录入hello myself。来完成的。这种方法重点是dd命令,记住删除一行要用dd(delete,delete,我是这样记忆的)。
第二种方法:
1、vi a.c
2、将光标移到world
3、xxxxxx
4、i
5、myself。
6、Esc
7、:
8、x
这种方法重点是x命令,删除当前字符,这也是最常用的命令之一。
第三种方法:
1、vi a.c
2、将光标移到world
3、xxxxx
4、i
5、myself
6、Esc
7、移动光标到!
8、r
9、。
10、:
11、x
这种方法重点是r命令(replace),替换当前字符,这也是最常用的命令之一。
第四种方法:
1、vi a.c
2、将光标移到world
3、cw
4、myself。
6、Esc
10、:
11、x
这种方法重点是cw命令(change word),替换当前单词,注意它也需要Esc结束修改状态,这也是最常用的命令之一。
大家都看到了吧,所有以上方法都是用:x来保存编辑内容的。:x也是最常用命令之一。
如果发现这次编辑错了,乱了,想放弃这次对文件的编辑,不想对原程序进行任何修改。则可以用:q!命令放弃修改退出vi。!可以记忆为强制,q!可以理解为强制退出。同理x!理解为强制保存。
通过以上三步的学习和练习,我们基本上可以接触到vi的基本操作过程和操作命令了。这些基本的操作可以说能够编制程序了。
你们可以试着用以上方法,编辑一下我前几篇博客中的a.c。文件名可改为helloworld.c
#include “stdio.h”
main()
{
fprintf(stdout,”hello world!\n”);
exit(0);
}
感觉一下vi操作,看看自己对以上最基本命令的掌握程度。对基础的东西要反复练习,认真记住,这样才会对后面的操作命令有更好的理解和配合。学会以上操作可以说你vi已经入门了。
第四步,学习复制、查询、取消
我们在编辑程序的时候,一般情况下都是增删改操作,这时候我们的视野仅仅局限在单字符、单词、单行。在很多情况下,需要行操作,例如我们需要新增行,我们需要复制,需要先复制再修改。
我们还是举前面一个例子。现在a.c内容为hello myself。
现在要求最终的内容为三行:
hello myself
hello world
hello c
第一种方法,先复制,后修改。
1、vi a.c
2、yy
3、p
4、p
5、向上移动一行
6、移动到myself(第二行)
7、cw
8、world
9、Esc
10、移动到下一行
11、移动到myself(第三行)
12、cw
13、c
14、Esc
15、:x
这种方法的重点是复制,粘贴。yy是复制当前行,p是粘贴复制的行。这是我认为vi最经典的命令设计之一,它可能是我们Ctrl-c ,Ctrl-v的鼻祖。
第二种方法:直接插入法
1、vi a.c
2、o
3、hello word
4、hello c
5、Esc
6、:x
这种方法的重点是在当前行下插入。o是插入命令,表示在当前行下插入,Esc插入结束。如果要在当前行上面插入行输入大写O则可以了,退出插入也是Esc。
第三种方法:复制查询修改法。
1、vi a.c
2、yy
3、p
4、p
5、:1
6、/
7、myself
8、n
9、cw
10、world
11、Esc
12、n
13、cw
14、c
15、Esc
16、:x
这种方法的重点是先复制了2行hello myself,然后通过:1命令让光标移到文件头(这个命令非常有用),然后用/命令进行查找myself,用n(next)命令移到第二个myself单词上,用cw进行修改,然后再用n命令,移到第三个myself上,用cw修改。/命令是查找命令,n是下一个。现在一些开发语言中也有同样的查询命令,估计也借鉴了vi。
我们在进行操作时候,往往会操作出错,这时候,vi提供了一个u(undo吧)命令,用于取消前次操作。
例如,当你复制2行时候,发现复制了3行的时候,你键入u,则
1、vi a.c
2、yy
3、p
4、p
5、p
6、u
这个时候,你最后一次,粘贴将会被取消。
这个例子的重点是介绍取消操作u,这个命令可以用于很多种操作,比如,i、I、O、o、A、x、r、dd、cw、s等等。在这些操作之后,键入u,前面的操作将被取消。
另外,介绍一个G命令,这个命令可以让光标定位到文件的最后一行。
例如:文件内容为:
Hello world
Hello myself
Hello c
当前光标在第一行
键入G,光标就定位在最后一行hello c上了。这个命令对于建立一个程序的时候,特别有用。比如,今天编了一段程序,明天再接着编,就可以用G命令一下子到最后一行,然后,用o命令继续你的新程序的插入。
待续!
作者 n216