1. 程式人生 > >sublime text3 中安裝ctags並進行配置

sublime text3 中安裝ctags並進行配置

windows下 sublime text3 中安裝ctags並配置和使用

一:安裝步驟

  1. 安裝package control , 已安裝的請忽略。

  2. 通過 Package Control (開啟快捷鍵ctrl+shift+p 搜尋install package)中搜索ctags 安裝 ctags 外掛

  3. 下載 ctags58 http://prdownloads.sourceforge.net/ctags/ctags58.zip 並解壓。設定ctags.exe到系統環境路徑。
    ex: 我本地的ctags58解壓路徑為 D:\command\ctags58


    (設定完後,就可在全域性中使用 ctags命令。 切換到專案的根目錄下,執行 ctags -R -f .tags 命令後,就會在專案的根目錄下生成 .tags檔案。可設定 exclude選項不解析某些路徑(相對路徑) ctags -R -f .tags –exclude=path )

  4. 步驟三是在全域性下的配置, 但為了配合sublime的使用,在專案上右鍵選擇 “CTags: Rebulid Tags”直接生成 .tags檔案
    (1). 將 sublime 中 Preference -> Package Settings -> cTags -> setting-Default 中的內容 拷貝到 setting-User中
    (2).設定 setting-User 檔案中 “command” 屬性值為 ctags.exe的執行路徑 (ex:”D:\command\ctags58\ctags.exe )
    (3). 也可設定 exclude選項,設定setting-User檔案中的 “opts”屬性值

  5. ctags搜尋對 js 新標準支援不好,但是可以進行配置。
    參考 http://www.codefornow.com/2013/04/13/javascript-source-code-indexing-with-sublime-text-editor-with-ctags/
    (Exuberant Ctag’s support for modern JavaScript is not great, but you can help it along by giving it some hints via a file ~/.ctag. You should put the following from Tim’s gist:)
    windows下在C:\Users\Administrator目錄下建立 .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/