刚开始用 vi 的人,常常抱怨 vi 的功能太小,用起来不够方便。仔细想一想,程序员常常号称是像狐狸一样懒惰的人, vi 的作者们都世界级的顶尖程序员,他们自己是程序员,难道他们还不知道自己需要什么样的编辑器? 用 vi 的历史,算上在学校的时间,也有六七
刚开始用 vi 的人,常常抱怨 vi 的功能太小,用起来不够方便。仔细想一想,程序员常常号称是像狐狸一样懒惰的人, vi 的作者们都世界级的顶尖程序员,他们自己是程序员,难道他们还不知道自己需要什么样的编辑器?
用 vi 的历史,算上在学校的时间,也有六七年光景了。大部分功能都用得比较熟练了,觉得够用就行了,对少数奇技淫巧也不肖一顾,也就没有再花过时间学习它的高级用法了。今天,从长生兄那里学了一招,可以直接跳到 grep 的结果里去,比较实用。
这件事情虽小,却对我有些触动,想了想,即使对自己熟悉的东西,闭目塞听只会使人停留在原处。借这个契机,总结一下一些有用的高级技巧吧。这些技巧,有的并不常用,时间一长,不用忘记了,要用的时间想不起来,要浪费时间去查资料,不如把它们记下来。
当然,这些并不是什么新东西,在网上都可以找得到的,只是我自己做个笔记罢了。
查看符号定义。 Vi 提供了像 Win32 下 IDE 那样的功能,可以很方便的查看函数原型、结构声明、宏的定义等。只是它的功能相比之下,要弱一些,不过,结合其它一些技巧,完全可以满足你的需要。使用这个功能,需要做一些设置:
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 可以返回原来的位置。
未完待续 …