Maison >base de données >tutoriel mysql >Vi 技巧集(开个头)

Vi 技巧集(开个头)

WBOY
WBOYoriginal
2016-06-07 15:35:211059parcourir

刚开始用 vi 的人,常常抱怨 vi 的功能太小,用起来不够方便。仔细想一想,程序员常常号称是像狐狸一样懒惰的人, vi 的作者们都世界级的顶尖程序员,他们自己是程序员,难道他们还不知道自己需要什么样的编辑器? 用 vi 的历史,算上在学校的时间,也有六七

 刚开始用vi的人,常常抱怨vi的功能太小,用起来不够方便。仔细想一想,程序员常常号称是像狐狸一样懒惰的人,vi的作者们都世界级的顶尖程序员,他们自己是程序员,难道他们还不知道自己需要什么样的编辑器?

 

vi的历史,算上在学校的时间,也有六七年光景了。大部分功能都用得比较熟练了,觉得够用就行了,对少数奇技淫巧也不肖一顾,也就没有再花过时间学习它的高级用法了。今天,从长生兄那里学了一招,可以直接跳到grep的结果里去,比较实用。

 

这件事情虽小,却对我有些触动,想了想,即使对自己熟悉的东西,闭目塞听只会使人停留在原处。借这个契机,总结一下一些有用的高级技巧吧。这些技巧,有的并不常用,时间一长,不用忘记了,要用的时间想不起来,要浪费时间去查资料,不如把它们记下来。

 

当然,这些并不是什么新东西,在网上都可以找得到的,只是我自己做个笔记罢了。

 

查看符号定义。Vi提供了像Win32IDE那样的功能,可以很方便的查看函数原型、结构声明、宏的定义等。只是它的功能相比之下,要弱一些,不过,结合其它一些技巧,完全可以满足你的需要。使用这个功能,需要做一些设置:

1.         安装ctags软件包。在安装光盘可以找到,也可以到网上下载源码包,自己编译。

2.         生成tags文件。进入到你的源代码所在的目录,运行ctags -R命令,它会为当前目录及子目录下的源程序建立索引,并在当前目录下创建一个tags文件,里面保存的是符号索引信息。

3.         设置tags路径。在vi的起动脚本文件中(一般是~/.vimrc),告诉vi在哪里可以找到tags文件,一般尽量用相对路径。如:set tags=./tags,../tags,../../tags,../../../tags

4.         跳到指定的符号。 + ] 可以跳转到光标所在处的符号的符号的定义那里。

5.         返回到原来的位置。 + t 或者 + o可以返回原来的位置。

 

查看系统函数的帮助Vi也可以像VC那样,很方便的跳转到系统函数的帮助那里。原理很简单,在vi运行外部命令man就行了:!man fopen,这样做,可能会觉得有些麻烦,vi提供了快捷的方式: + k可以跳到光标所在处的符号的帮助那里。

 

自动定位编译错误处。VC里,编译时,如果出现编译错误,双击错误信息,编辑器自动切换到出现错误的地方,是不是很方便呢?其实不用羡慕,vi也有这种功能,在vi里,运行make命令后,如果有编译错误,你按一下回车,vi自动定位到第一个编译错误那里。记得,要用内置的make命令,即运行:make,不是外部命令:!make

 

自动定位查找结果。在写程序时,我们常常想知道,有哪些地方使用了某个函数,怎么办呢,你可以在shell里,用grep查找,然后打开对应的文件,可以看到相关的上下文信息。但这样做比较麻烦,Vi有个内置的grep命令,用起来很方便:

1.         查找。用法和shell中的grep一致。

2.         跳到第一个查找结果处。直接回车就行了。

3.         列出所有的查找结果。:cl命令可以列出所有的查找结果,每个结果都有一个编号。

4.         跳到某项查找结果的文件中。:cc 编号> 命令可以跳到指定编号查找结果的文件中,编号>是前面用:cc列出来的编号。

5.         返回到原来的位置。 + o 可以返回原来的位置。

 

未完待续

 

 

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn