从事实时计算多年,熟悉jstorm/spark/flink/kafka/rocketMq, 热衷于开源,希望在这里和前辈们一起学习与分享,得到长足的进步!邮箱:hustfxj@gmail.com 我的githup地址是:https://github.com/hustfxj。欢迎和大家一起交流探讨问题。
分类: LINUX
2013-11-29 11:28:02
taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!
首先是ctags的安装,推荐使用exuberant ctags,我们可以从其官方网站上下载它的源码包,进行解压缩,编译,安装即可。
1)ubuntu安装
sudo apt-get install exuberant-ctags
( 或者下载 手动安装 download ctags-5.8.tag.gz (地址)
tar xzvf ctags-5.8.tag.gz
cd ctags-5.8
./configure
sudo make
sudo make install
)
至此,ctags的安装已经完成,可以使用ctags命令来检测时候完成安装。
检测:
在自己的项目文件夹下执行 $ctags -R * (不执行就起不到效果)
注:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件, 当用户在当前目录中运行vi时,会自动载入此tags文件。
然后就可以入手了。
常用的命令:
熟练的使用ctags仅需记住下面七条命令:(很简单吧,呵呵)
1. $ ctags –R * ($ 为Linux系统Shell提示符)
2. $ vi –t tag (请把tag替换为您欲查找的变量或函数名)
3. :ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
4. :tp (tp 助记字:tags preview)---此命令不常用,可以不用记
5. :tn (tn 助记字:tags next) ---此命令不常用,可以不用记
6. Ctrl + ]
7. Ctrl + T
在自己的项目文件夹下执行 $ctags -R * (不执行就起不到效果)
注:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件, 当用户在当前目录中运行vi时,会自动载入此tags文件。
然后就可以入手了。
常用的命令:
熟练的使用ctags仅需记住下面七条命令:(很简单吧,呵呵)
1. $ ctags –R * ($ 为Linux系统Shell提示符)
2. $ vi –t tag (请把tag替换为您欲查找的变量或函数名)
3. :ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
下面我们来进行taglist的安装,同ctags的安装一样这里我们也是去其官方网站下载解压其源码包。
具体步骤如下:
下载地址
解压文件
# unzip -d taglist taglist_45.zip // 解压;
把该文件在~/.vim/目录中解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:
plugin/taglist.vim – taglist插件
doc/taglist.txt - taglist帮助文件
进入vim模式,输入命令:helptags ~/.vim/doc 使用下面的命令生成帮助标签;
此后你就可以使用命令:help taglist.txt,查看帮助;
之后你就可以使用命令:TlistOpen,显示下图
在屏幕右侧出现的就是taglist窗口,你从中可以看到在main.c文件中定义的所有tag:宏、定义、变量、函数等;你也可以双击某个tag,跳到该tag定义的位置;你还可以把某一类的tag折叠起来(使用了VIM的折行功能),方便查看,就像图中macro和variable那样。更多的功能,请查看taglist的帮助页,本文也会介绍一些常用功能。
修改.vimrc文件
? Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;
? 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;
? 设置Tlist_Sort_Type为”name”可以使taglist以tag名字进行排序,缺省是按tag在文件中出现的顺序进行排序。按tag出现的范围(即所属的namespace或class)排序,已经加入taglist的TODO List,但尚未支持;
? 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。
? 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。你可以使用Tlist_Max_Submenu_Items和Tlist_Max_Tag_Length来控制菜单条目数和所显示tag名字的长度;
? 缺省情况下,在双击一个tag时,才会跳到该tag定义的位置,如果你想单击tag就跳转,设置Tlist_Use_SingleClick为1;
? 如果你想在启动VIM后,自动打开taglist窗口,设置Tlist_Auto_Open为1;
? 如果你希望在选择了tag后自动关闭taglist窗口,设置Tlist_Close_On_Select为1;
? 当同时显示多个文件中的tag时,设置Tlist_File_Fold_Auto_Close为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
? 在使用:TlistToggle打开taglist窗口时,如果希望输入焦点在taglist窗口中,设置Tlist_GainFocus_On_ToggleOpen为1;
? 如果希望taglist始终解析文件中的tag,不管taglist窗口有没有打开,设置Tlist_Process_File_Always为1;
? Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度。Tlist_Use_Horiz_Window为1设置taglist窗口横向显示;
在Taglist窗口按
F1: 打开帮助
回车键: 跳到光标所在的标记的定义处(如将光标移到main函数,按回车键)
o: 新建一个窗口,跳到标记定义处
p: 预览标记定义(仍然在taglist窗口)
空格: 显示标记的原型(如函数原型)
u: 更新标记列表(比如源文件新增了一个函数,并在保存后,可在taglist窗口按u)
s: 选择排序字段(暂时我也不知道什么意思)
d: 删除光标所在的taglist文件(如用vi打开了两个文件f1.c,f2.c可以删除f1.c的标记)
x: 放大/缩小taglist窗口
+: 展开(指标记)
-: 折叠
*: 全部展开
=: 全部折叠
[[: 将光标移到前一个文件的起点
]]: 将光标移到后一个文件的起点
q: 退出taglist窗口
F1: 关闭帮助
可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用“,tl”键就可以打开/关闭taglist窗口: