当前位置: 首页 > news >正文

vim插件 ctags 和 taglist 的安装和使用

1.ctags
(1)到
http://ctags.sourceforge.net/
下载ctags源码ctags-5.6.tar.gz
http://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz
(2)解压并安装
tar zxvf ctags-5.6.tar.gz
cd ctags-5.6
./configure && make && make install
(3)使用
[/home/brimmer/src]$ ctags -R
"-R"表示递归创建,也就包括源代码根目录下的任何子目录下的源程式。"tags"文档中包括这些对象的列表:
l 用#define定义的宏
l 枚举型变量的值
l 函数的定义、原型和声明
l 名字空间(namespace)
l 类型定义(typedefs)
l 变量(包括定义和声明)
l 类(class)、结构(struct)、枚举类型(enum)和联合(union)
l 类、结构和联合中成员变量或函数
VIM用这个"tags"文档来定位上面这些做了标记的对象,下面介绍一下定位这些对象的方法:
1) 用命令行。在运行vim的时候加上"-t"参数,例如:
[/home/brimmer/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"文档。
在函数中移动光标
[{ 转到上一个位于第一列的"{"
}] 转到下一个位于第一列的"{"
{ 转到上一个空行
} 转到下一个空行 ([ and ] 也分别是两个指令)
gd 转到当前光标所指的局部变量的定义
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方
Vim 的创造者是一名电脑程式员,因此这就不奇怪 Vim 中有许多帮助编写程式的功能:
跳转到标识符被定义和使用的地方;在另一个窗口中预览有关的声明等等。
(ctags使用部分参考了 文章“ctags和vim”,原文在
http://hi.baidu.com/original/blog/item/2cf8d53f00b7fcc27d1e71f0.html

更多使用也请参考原文)
2. taglist
能够列出源文档中的tag(function, class, variable, etc)并跳转.
注意:taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!
(1)到
http://vim.sourceforge.net/scripts/script.php?script_id=273
下载taglist_42.zip,即
http://vim.sourceforge.net/scripts/download_script.php?src_id=6416
(2)解压得到两个文档
# unzip -d taglist taglist_42.zip
# cd taglist
# tree
.
|-- doc
| `-- taglist.txt
`-- plugin
`-- taglist.vim
(3)安装
cp doc/taglist.txt /usr/share/vim/vim61/doc/
cp plugin/taglist.vim /usr/share/vim/vim61/plugin/
(4)配置和使用
cd /usr/share/vim/vim61/doc/
启动vim,用 “:help tags .”来配置好帮助文档
重启vim,用“:TlistToggle”来打开和关闭taglist窗口。
能够用“:help taglist”来获得更多帮助信息。

相关文章:

  • LeetCode -- Longest Increasing Subsequence
  • LeetCode -- Serialize and Deserialize Binary Tree
  • Ubuntu中用apt安装和卸载软件
  • LeetCode -- Single Number III
  • Linux 常用C函数(内存及字符串操作篇2)
  • LeetCode -- Subsets II
  • WCDMA与CDMA2000网络结构比较
  • LeetCode -- Integer to English Words
  • WiMAX组网技术与解决方案
  • LeetCode -- Sum Root to Leaf Numbers
  • 移动设备管理(MDM)与OMA(OTA)DM协议向导(三)——AAA服务器
  • LeetCode -- Surrounded Regions
  • LeetCode -- Triangle
  • Nebula3中的骨骼动画: Animation子系统
  • LeetCode -- Ugly Number II
  • ES6指北【2】—— 箭头函数
  • Brief introduction of how to 'Call, Apply and Bind'
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • isset在php5.6-和php7.0+的一些差异
  • Java 内存分配及垃圾回收机制初探
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 服务器从安装到部署全过程(二)
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 用jquery写贪吃蛇
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三十五)大数据实战——Superset可视化平台搭建
  • (算法二)滑动窗口
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)hibernate缓存
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /etc/skel 目录作用
  • @ResponseBody
  • [20150321]索引空块的问题.txt
  • [22]. 括号生成
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C++] new和delete
  • [Flexbox] Using order to rearrange flexbox children
  • [nlp] 损失缩放(Loss Scaling)loss sacle
  • [python]python筛选excel表格信息并保存到另一个excel
  • [SharePoint][SharePoint Designer 入门经典]Chapter13 客户端Silverlight编程
  • [WeChall] Training: Regex (Training, Regex) 的答案