Vim + ctags + taglist + code_complete

所谓“工欲善其事,必先利其器”,所谓“磨刀不误砍柴工“。在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”来获得更多帮助信 

五.配置ccompelete

autocmd Filetype c set omnifunc=ccomplete#Complete

参考资料: 
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://blog.csdn.net/shi_869160/archive/2010/10/07/5925059.aspx

原文链接: https://www.cnblogs.com/loveclover/archive/2011/03/24/1993745.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Vim + ctags + taglist + code_complete

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/22757

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午12:45
下一篇 2023年2月8日 上午12:45

相关推荐