所谓“工欲善其事,必先利其器”,所谓“磨刀不误砍柴工“。在
linux下,
vim时一种最常见的编辑器,很多linux的发行版就自带了(不过 Ubuntu目前时需要自己安装的,默认只带了vi)。今天搞了半天了Vim,通过几个插件来武装我的vim,使其能向传说中的一样成为C/C++程序员的利器。
通过配置和插件,实现的功能有:语法高亮+自动缩进+函数自动补全+变量函数的跟踪+列出源代码中的函数变量等
用到的工具有:Vim+.vimrc配置文件+Ctags+taglist
使用效果:http://files.myopera.com/mbbill/files/code_complete.gif
PS:这个效果非常炫的!~
vim 下载地址http://www.vim.org ubuntu可使用sudo apt-get install vim
code_complete.vim 插件http://www.vim.org/scripts/script.php?script_id=1764
ctags 一般安装完vim后都会有,ubuntu中好像是不支持,需要下载:http://www.vim.org/scripts/script.php?script_id=610
taglis 下载:http://www.vim.org/scripts/script.php?script_id=273
一. vim 配置
1、配置文件的位置
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。我就在自己的$HOME目录下新建了了.vimrc文件来配置的。(如果设置/etc/vimrc对所有用户都有效配置,某个userHOME下在.vimrc仅对这���user有效)
2、设置语法高亮显示
1) 打开.vimrc,添加以下语句来使得语法高亮显示:
syntax on
2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
export TERM=xterm-color
3、设置 Windows风格的C/C++自动缩进(添加以下set语句到.vimrc中)
1)不讨论制表符为8还是为4较好,这里设置(软)制表符宽度为4:
set tabstop=4
set softtabstop=4
2)设置缩进的空格数为4
set shiftwidth=4
3)设置 自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set autoindent
4)设置使用 C/C++ 语言的自动缩进方式:
set cindent
5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左侧显示文本的行号,可以用以下语句:
set nu
7)最后,如果没有下列语句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
PS:自动缩进有两个选项,代码:
set autoindent 与 set cindent
autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是"自动对齐”,当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。
cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度,比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值,当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。
二. code_complete 配置
把下载的code_complete.vim拷贝到plugin目录下,一般都在(我的是)/usr/share/vim/vim72/plugin下 (不同的vim版本vim72可能时 其他,我的目前时7.2版本)
在vim中使用<tab>键就可以补全函数原型了。具体不全的快捷键的定义,如果in代表#include " ",见:code_complete.vim文件中的定义。
三. 用ctags命令生成tags文件,ctags -R --c-kinds=+p --fields=+S /usr/include 应该算是建立索引表(默认会在当前目录生成tags文件),然后把生成的tags文件拷贝到你编程的目录。
注意:ctags -R 后面不加上绝对路径,就时建立当前目录的下所有文件的索引,那么建立的索引文件中都是写的相对路径,你将tags文件拷贝到其他目录去用时,它就会找不到相应的函数/变量等。
"-R"表示递归创建,也就包括源代码根目录下的所有子��录下的源程序。
"tags"文件中包括这些对象的列表:
用#define定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间(namespace)
类型定义(typedefs)
变量(包括定义和声明)
类(class)、结构(struct)、枚举类型(enum)和联合(union)
类、结构和联合中成员变量或函数
VIM用这个"tags"文件来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:
1) 用命令行。在运行vim的时候加上"-t"参数,例如:
[/home/admin/src]$ vim -t foo_bar
这个命令将打开定义"foo_bar"(变量或函数或 其它)的文件,并把光标定位到这一行。
2) 在vim编辑器内用":ta"命令,例如:
:ta foo_bar
3) 最方便的方法是把光标移到变量名或函数名上,然后按下"Ctrl-]"。用"Ctrl-o"退回原来的地方。
注意:运行vim的时候,必须在"tags"文件所在的目录下运行。否则,运行vim的时候还要用":set tags="命令设定"tags"文件的路径,这样vim才能找到"tags"文件。
四. taglist的配置和使用
下载taglist压缩包,并解压,cp plugin/taglist.vim /usr/share/vim/vim72/plugin/ ; cp doc/taglist.txt /usr/share/vim/vim61/doc/
启动vim��用 “:helptags .”来配置好帮助文件;重启vim,用“:TlistToggle”来打开和关闭taglist窗口;可以用“:help taglist”来获得更多帮助信
参考资料:
http://blog.chinaunix.net/u2/74761/showart_1096872.html
http://www.linuxsir.org/bbs/showthread.php?p=2095747#post2095747 (vim很强大功能介绍)
http://linux.chinaunix.net/bbs/thread-1036769-1-1.html
http://blog.chinaunix.net/u/553/showart_288387.html
http://www.51testing.com/?uid-25484-action-viewspace-itemid-211836