vim学习笔记-CTags和taglist

这两天,vim的学习遇到瓶颈。vimtutor看完后,虽然会了很多基本操作,但是随着学习的深入,问题越来越多。按照vimtutor的指示,接下来应该看user-manual:

This concludes the Vim Tutor.  It was intended to give a brief overview of  the Vim editor, just enough to allow you to use the editor fairly easily.  It is far from complete as Vim has many many more commands.  Read the user  manual next: ":help user-manual".

然而打开user-manual就一个目录列表,傻眼了。然后网上各种找资料,开始知道用 :syntax enable 开启语法高亮,用 ctrl + ] 在高亮的单词上进行jump around。突然想起以前有个哥们在我面前炫耀他的vim时,在代码间跳来跳去的画面,当时就觉得好厉害,其他啥也没看懂。

给我带来难题的是神秘而强大的tags文件。

刚开始,在网上查资料得到的答案是:安装ctags,使用ctags命令生成tags文件。我非常疑惑的是,我没装ctags为什么可以在user-manual中跳转呢?而且很多文章中都把ctags称为vim的插件,那么新的问题又来了:vim插件的位置又在哪里?默认又带了些什么插件呢?Exuberant Ctags和CTags一样么?CTags诞生那么早,而编程语言层出不穷,他是否需要对相应的语言的语法规则进行配置?CTags是用来生成C/C++代码的tags的还是所有语言都可以,有没有JTags之类的东西呢(现在看来有点可笑)?即使我都解决了前面的问题生成了tags文件,这文件又要怎么用?带着这么多问题,也没心思慢慢读完厚厚的user-manual。我甚至有点绝望,以为自己终究还是不能成为神秘的vimer的一员。

经过几天痛苦的挣扎,不停找资料,不停试验,随着对vim零星的认识的积累,今天突然开窍了,好开心。

我的理解是,CTags是一个用来生成tags文件的工具,并不是vim的插件。

Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object).【1】

有些文章说他是vim的插件,有些文章中把ctags复制到vim文件夹下,对我形成了一定程度的误导。而很多大牛写的文章都是基于linux的,不是用make就是apt-get,于是这部分知识在windows平台下缺失了。没办法,硬着头皮切到linux下,照着《将Vim改造为强大的IDE》【2】中的介绍在linux下学习vim,安装ctags时又发现软件的名称叫Exuberant Ctags,然后有看到作者配置的ctags快捷键:

map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>

!shell命令,恍然大悟。再回想,别人复制到vim文件中的都是ctags.exe,vim的安装路径又在安装时被设置到了path中。于是,回到windows下,上Exuberant Ctags官网【1】下载for windows的zip包,解压,配置环境变量,开启命令窗口cd到一个java工程目录下,执行 ctags -R .  命令,目录下多了个tags文件,用vim随意打开一份源代码进行试验,跳转成功。再去vim的doc下一查,果然自带tags文件。围绕CTags的疑问一下烟消云散,难怪我没装CTags也能用到处跳转,tags文件才是vim真正需要的。tags文件的用处也引刃而解:它是个索引文件。taglist就是一个使用tags文件的插件,将tags在vim中显示出来。

参考资料:

【1】Exuberant Ctags官网 http://ctags.sourceforge.net/

【2】将Vim改造为强大的IDE http://www.cnblogs.com/zhangsf/archive/2013/06/13/3134409.html

时间: 2024-10-08 05:29:03

vim学习笔记-CTags和taglist的相关文章

Vim学习笔记

1.复制粘贴操作 vim有12个粘贴板,分别是0.1.2.....9.a.".+: 用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到"(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny(注意带引号)完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下

VIM学习笔记(二)

VIM学习笔记第二篇,由于需要整理文档并且还要工作,并不能达到每天学习并发表一篇,不过勤于记录就好~ 2.查找查找命令是“/String”,注意,.*[]^%/\?"$有特殊含义,查找他们需要前面加一个"\",使用“n”查找下一个,查找第三个匹配,使用“3n”,“N”重复前一次查找."?"与“/”类似,但是反向查找,功能也相反.-------------------------------------------------------忽略大小写:set

vim 学习笔记系列(前言)

今天上午的时候,看到大神在用vim编程,画面直观,速度很快,操作只需要用命令符就可以实施. 所以可以推断vim的命令符是复杂的,那么学习过程中记忆会很漫长,很痛苦,但是如果记住了这些命令符,并可以熟练的使用,那么便可以放弃鼠标的使用,从而提高了效率. 一般人一直是用的比较直接的Eclipse Xcode之类的软件,习惯了,就觉得在编辑的过程中还要输入新的command,觉得是很麻烦的,所以一旦遇到这种情况,就皱了眉头了. 所以,我想把我学习时的笔记,分享给大家, vim笔记会在vim栏目一一列举

Vim学习笔记(一):准备工作

一.前言 之前学习过Vim,但是由于种种原因,没有继续学习下去,其实是毅力不够,没能够坚持下去,所以到现在Vim也只会简单的操作,真是惭愧.现在重新拾起学习Vim,并记录学习过程.Vim中好玩的命令以及学习中遇到的问题……,希望有一天也能成为VIm大神(妹子们看着我在命令行上敲敲打打该会有多佩服啊^_^). 开始学习Vim是痛苦,因为Vim中命令确实是太多了,但是硬记起来很快又会忘了,所以最有效的方式是:不断地练习,可能这个周期有点长,所以不要期望在短时间内将Vim用得比其他编辑器有效. (各种

vim学习笔记(1)——vim操作

仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new/g 全局替换old为new 移动 0 移动到开头 $ 移动到结尾 w 移动到下一个单词开头 e 移动到下一个单词结尾 fx 移动到本行之后第一个出现x字母的位置 tx 移动到本行之后第一个出现x字母的前一个位置 gg 跳到文件首 G 跳到文件尾 NG 移动到第N行,或者用:N也可 { 上一段.}下

Vim学习笔记(二):第一章:vi文本编辑器

vim兼容vi的所有指令 vi命令有如下特点: 字母大小写有区别 在输入时不会显示在屏幕上 不需要再命令后加Enter键 1.打开与关闭文件 编辑文本时,vi将要编辑的文件复制到缓冲区(内存中另外设置的暂存本地内容的部分),显示缓冲区(虽然一次只能看到一个屏幕尺寸的部分),并且让你增加.删除和更改文本.存储编辑的结果时,vi则把缓冲区中的内容写回到永久的文件中,替换同名的旧文件.记住一点,你永远是在缓冲区里的文件副本上作业. 打开文件命令: $  vi  [fikename] 上述命令出现方括号

vim 学习笔记

vim介绍:一款编辑器,另外一般linux系统会自带,所以一般linux下日志.配置文件等 纯文本文件的修改编辑等通过vim操作 学会的好处:1 方便操作linux下日志.配置文件等纯文本文件 2 功能强大,提供很多便捷的功能,如文本跳转.块操作.操作录制等,能实现一些功能, 举一些例子: 批量生成递增数字 一列数据合成一行,以逗号分隔 3 提供很多插件扩展功能 4 减少鼠标操作,提高操作速度 学习过程中的问题:1 掌握有一点难度,因为很多快捷键,鼠标基本没有用 2 接触一些新的概念 推荐学习方

4、文件测试、字符测试、if、vim 学习笔记

bash编程之:字符测试,一般加引号 双目: > : 大于 < :小于 ==:等于,等值比较 =~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配:通常只在[[]]中使用 模式中可以使用行首.行尾锚定符,但是模式不要加引号 !=, <>: 不等于 单目: -n 字符串: 字符串是否不空,不空为真,空则为假 -z 字符串:字符串是否为空,空则为真,不空则假: 判定所有用户是否拥有可登录shell #!/bin/bash for userName in `cut

git 和 vim 学习笔记

在学校的时候,也断断续续的用过 git和 vim,断断续续的原因是学校的网络对 github 支持不是很好,有时候会打不开,所以,用来对代码进行版本管理就不太合适了.所以,对 git 和 vim 的命令就不是多熟悉了.现在工作嘛,长期使用这两个工具,就一定要很熟悉才行,为了让自己不忘记一些常用命令,记录下吧. git 常用命令 本地创建仓库 创建仓库 cd < target directory > 与远程仓库建立关联 git remote add origin [email protected