阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义。windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具。其实万能的vim就可以实现。下面介绍一下vim+ctags+taglist的配置。

安装ctags

ubuntu源提供了ctags的安装。

sudo apt-get install ctags

安装taglist

下载:

http://vim.sourceforge.net/scripts/download_script.php?src_id=6416

拷贝到ubuntu中,使用命令解压:

mkdir ~/.vim
unzip taglist_42.zip -d ~/.vim

解压后应该得到/doc和/plugin。 两个目录然后安装进vim

cp ~/.vim/doc/taglist.txt /usr/share/vim/vim74/doc/
cp ~/.vim/plugin/taglist.vim /usr/share/vim/vim74/plugin/

然后启动vim,命令模式输入

:helptags /usr/share/vim/vim74/doc/

之后,我们就可以使用

:help taglist.txt

命令来查看taglist的帮助文档。

之后,修改,vimrc 文件。

添加如下内容:

"""""""""Ctags"""""""""
set tags=tags
"""""""""taglist"""""""""
let Tlist_Auto_Open = 1
let Tlist_Sort_Type="name"
let Tlist_Exist_OnlyWindow =1
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1
let Tlist_Use_Lift_Window = 1

以后,你只需要在源码目录顶层输入

ctags -R 

生成tags文件,然后用vim打开你的C文件,就可以使用快捷键进行跳转了。

使用ctr 和两次w在侧窗口和主窗口之间进行切换。

        Ctrl + ] //跳入定义
Ctrl + T //调回

为ctags生成系统tags

如上之后,你会发现,ctags仅仅支持源文件中定义的宏,变量和函数,但是我们调用的基本函数和系统函数都没办法实现跳转。

使用下面的命令生成系统头文件tags

ctags -I __THROW --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --fields=+S  -R -f ~/.vim/systags /usr/include /usr/local/include

最后,设置你的~/.vimrc,加入一行:

set tags+=~/.vim/systags

就可以享受系统库函数跳转等功能了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. Codeforces Round #367 (Div. 2)
  2. WPFUIElement的Background的问题
  3. sysfs接口函数的建立_DEVICE_ATTR(转)
  4. Solr DIH以Mysql为数据源批量创建索引
  5. Android JNI之JAVA与C++对象建立对称关联(JNI优化设计,确保JNI调用的稳定性)
  6. [JLOI2013]地形生成
  7. C++与lua交互
  8. Scala-循环
  9. Python3基础 内嵌函数 简单示例
  10. Java排序小算法(冒泡和选择)
  11. 1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果
  12. WebService基础学习(三)—CXF
  13. 我眼中的Linux设备树(三 属性)
  14. BZOJ.4144.[AMPPZ2014]Petrol(Kruskal重构树)
  15. JDK源代码学习-ArrayList、LinkedList、HashMap
  16. 【原创】大叔经验分享(23)spark sql插入表时的文件个数研究
  17. 如何使用JMeter开源性能测试工具来构建Web性能测试体系
  18. RabbitMQ 选型和对比
  19. Hadoop生态圈-HUE环境部署
  20. 63.delegate回调 和block回调

热门文章

  1. mac 工具集
  2. 解决eclipse中自带的maven搜索不到非本地第三方包问题
  3. rabbitmq技术
  4. centos6.5搭建lnmp环境
  5. (ios7) 解决Ios7中,Navigatebar 显示在主View中,和ios6 不一致问题
  6. nginx找不到php文件
  7. SVN代码回滚命令之---merge的使用
  8. 我是一只it小小鸟阅读笔记
  9. Asp.Net微信登录-电脑版扫描二维码登录
  10. 纯windows下制作变色龙引导安装U盘教程
  11. bzoj2595
  12. PureMVC(JS版)源码解析(七):Mediator类
  13. 基于Node.js的强大爬虫 能直接发布抓取的文章哦
  14. 用javascript来实现前端简单路由
  15. Http Header 之 Requests Header 和 Responses Header
  16. c++ 如何获取多线程的返回值?(std::thread ,std::async)
  17. Jenkins. 安装过程中出现一个错误: No such plugin: cloudbees-folder
  18. SpringBoot2静态资料访问
  19. Charm Bracelet(01背包问题)
  20. Java基础-SSM之mybatis一对多和多对一关系映射