Heim >Datenbank >MySQL-Tutorial >Vi 技巧集(开个头)

Vi 技巧集(开个头)

WBOY
WBOYOriginal
2016-06-07 15:35:211057Durchsuche

刚开始用 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 可以返回原来的位置。

 

未完待续

 

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn