刚开始用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. 跳到指定的符号。<ctrl> + ] 可以跳转到光标所在处的符号的符号的定义那里。
5. 返回到原来的位置。<ctrl> + t 或者<ctrl> + o可以返回原来的位置。
查看系统函数的帮助。Vi也可以像VC那样,很方便的跳转到系统函数的帮助那里。原理很简单,在vi运行外部命令man就行了:!man fopen,这样做,可能会觉得有些麻烦,vi提供了快捷的方式: <shift> + k可以跳到光标所在处的符号的帮助那里。
自动定位编译错误处。在VC里,编译时,如果出现编译错误,双击错误信息,编辑器自动切换到出现错误的地方,是不是很方便呢?其实不用羡慕,vi也有这种功能,在vi里,运行make命令后,如果有编译错误,你按一下回车,vi自动定位到第一个编译错误那里。记得,要用内置的make命令,即运行:make,不是外部命令:!make。
自动定位查找结果。在写程序时,我们常常想知道,有哪些地方使用了某个函数,怎么办呢,你可以在shell里,用grep查找,然后打开对应的文件,可以看到相关的上下文信息。但这样做比较麻烦,Vi有个内置的grep命令,用起来很方便:
1. 查找。用法和shell中的grep一致。
2. 跳到第一个查找结果处。直接回车就行了。
3. 列出所有的查找结果。:cl命令可以列出所有的查找结果,每个结果都有一个编号。
4. 跳到某项查找结果的文件中。:cc <编号> 命令可以跳到指定编号查找结果的文件中,<编号>是前面用:cc列出来的编号。
5. 返回到原来的位置。<ctrl> + o 可以返回原来的位置。
未完待续…