Skip to content

Instantly share code, notes, and snippets.

@loskael
Last active November 21, 2016 12:02
Show Gist options
  • Save loskael/d990063733196b7d1cdc to your computer and use it in GitHub Desktop.
Save loskael/d990063733196b7d1cdc to your computer and use it in GitHub Desktop.
sublime text 中使用ctags

熟悉 vim 的人应该对 ctags 并不陌生, 首先介绍一下这货的作用:

扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来

根据这些记录, 借助sublime text 强大的插件功能, 就可以像用 eclipse 跟踪 java 代码 一样, 跟踪 javascript 代码了, 废话少说, how to do?

安装

  1. 安装 Package Control, 已安装的请忽略
  2. 通过 Package Control 中安装 ctags 插件
  3. 下载 ctags58 http://prdownloads.sourceforge.net/ctags/ctags58.zip 并解压
  4. 配置系统环境变量 或 设置插件的command

    I. 设置系统环境变量, 比如: D:\ctags58; II. Preferences -> Package Control -> Settings -> ctags -> Settings-Default -> command->设置为ctags可执行文件路径

  5. 添加javascript配置文件 ~/.ctags

    windows下可以保存为 ~/ctags.cnf 参考 http://www.codefornow.com/2013/04/13/javascript-source-code-indexing-with-sublime-text-editor-with-ctags/

--langdef=js
--langmap=js:.js
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*\{/\5/,object/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\5/,function/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*\[/\5/,array/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*[^"]'[^']*/\5/,string/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*(true|false)/\5/,boolean/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*[0-9]+/\5/,number/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*.+([,;=]|$)/\5/,variable/
--regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*[ \t]*([,;]|$)/\5/,variable/
--regex-js=/function[ \t]+([A-Za-z0-9_$]+)[ \t]*\([^)]*\)/\1/,function/
 
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*\{/\2/,object/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*function[ \t]*\(/\2/,function/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*\[/\2/,array/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*[^"]'[^']*/\2/,string/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*(true|false)/\2/,boolean/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*[0-9]+/\2/,number/
--regex-js=/(,|^)[ \t]*([A-Za-z_$][A-Za-z0-9_$]+)[ \t]*:[ \t]*[^=]+([,;]|$)/\2/,variable/

到此, 安装已经over了

使用

参考: https://github.com/SublimeText/CTags#commands-listing

@xuqinggang
Copy link

你好。在给ctags添加javascript配置文件后。当给某个变量进行 Navigate to Definition时,不只是搜索到变量声明,变量的使用(当做属性等等 只要是同一个字符串)也会搜索到。如何解决?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment