更好的用vim浏览Javascript代码

vim默认没有一般IDE的outline视图,浏览长篇Javascript源文件很麻烦,taglist插件正是弥补这点不足。它可以将所有方法和变量分级罗列出来,一目了然。taglist是依赖强大的ctags实现的。ctags支持41种编程语言,其中包括Javascript,但对Javascript支持较随意。

ctags + taglist的安装过程:
1. 下载exuberant ctags
2. 安装exuberant ctags:
> ./configure
> make
> sudo make install
3. 安装taglist
4. 让taglist针对javascript显示更多信息。新建$HOME/.ctags文件,添加:
感谢@KDepp补充: windows用户要注意,放在$HOME/ctags.cnf中。

--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*new[ t]+Object(/1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*{/1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(/1/f,function/
--regex-JavaScript=/function[ t]+([A-Za-z0-9._$]+)[ t]*([^])]*)/1/f,function/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*new[ t]+Array(/1/a,array/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*[/1/a,array/
--regex-JavaScript=/([^= ]+)[ t]*=[ t]*[^""]'[^'']*/1/s,string/
--regex-JavaScript=/([^= ]+)[ t]*=[ t]*[^'']"[^""]*/1/s,string/

5. 在.vimrc添加:

let Tlist_JS_Settings = 'javascript;s:string;a:array;o:object;f:function'
let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'

6. 打开一个js,执行:Tlist。

遇到问题可参考下面链接:

http://vim-taglist.sourceforge.net/faq.html

http://easwy.com/blog/archives/exuberant-ctags-chinese-manual/

jsctags是专门针对javascript做的,目的就是提供比ctags更好的索引结果。它完全是用javascript写的,基于node.js和narcissus。现在这个项目已改名为DoctorJS

下面这两个插件都是利用DoctorJS对javascript文件做处理的:
1. Taglist-Plus
2. Tagbar。另一篇介绍Tagbar的文章:http://is.gd/tKfuTe

在编辑.html文件里的javascript,taglist找不到任何标签。只好先:set ft=php,再用Tagbar。

Comments

  1. 红茶 says:

    刚刚开启用vim来写JS,这篇文章太受益了,谢谢!

  2. KDepp says:

    –regex-JavaScript= 这里应该是 –regex-JavaScript=

    然后windows用户要注意,第四步中的内容要放在$HOME/ctags.cnf中

  3. KDepp says:

    汗。。。 原来这里两个减号会被自动转为 “–”, 楼上所指的是 减号减号regex-JavaScript

  4. kejun says:

    tagbar是按命名空间归类,有些方法显示不出来。这一点没有taglist好

  5. 飞飞 says:

    你好,请教一个问题。
    jsctags如何安装在windows环境的gvim里面呢?
    node.js的0.5.10版本可以很方便的安装在windows环境中,
    但是jsctags(octorJS)一直没有找到有效的解决办法。
    如果方便的话,可否QQ交流或者回复下邮件,非常感谢
    QQ:276230416

    • Kejun says:

      @飞,我没在windows下用过,你是装了nodejs但装不上tagbar?

      • 飞飞 says:

        你好,nodejs现在有windows版本了。
        但没有发现jsctags的windows安装方法。
        只有jsctags生效后,tagbar才可以生效吧?

  6. alswl says:

    请问有没有好的vim JS indent插件,我在Vim Scripts上搜了前几个,发现都不尽人意。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">