打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
讓 Sublime Text 也擁有 "Navigate to Definition" 功能 (設定 CTags) ? Bruce 的玩具間

欲達到的功能

註:本篇適用於 Mac,若用 Linux 請依照 Distribution 尋找適用的安裝指令 (apt, yum, ...),Windows 很久沒用了不瞭解安裝方式。

安裝

用 Homebrew 安裝 ctags

Mac 內建的 ctags 不支援 recursive 資料夾搜尋 (-R 選項),因此根本不符合需求。

如果遇到類似 "illegal option -- R" 的錯誤訊息,很有可能是因為吃到內建的 ctags。

先跑 Homebrew 自我檢測工具,盡量排除警告訊息

brew doctor

安裝 ctags

brew install ctagswhich ctags # 應該出現 /usr/local/bin/ctags

如果裝好後 ctags 還是吃到內建的 /usr/bin/ctags ,需注意你的 $PATH 的順序是否正確。

Sublime Text 安裝 CTags 外掛

如果你的 Sublime Text 還沒有安裝 Package Control,請先安裝。

  1. cmd+shift+p 叫出指令框
  2. 搜尋 "Package Control: Install Package" 並按 Enter 執行
  3. 搜尋 "CTags" 並按 Enter 安裝

設定

如果 Sublime 還是吃不到 homebrew 的 ctags,可以強制指定

選單 Sublime Text > Preferences > Package Settings > Ctags > Settings - User
{  "command": "/usr/local/bin/ctags", # 可以在這行指定 ctags 路徑  "autocomplete": true # 順便利用 ctags 來做 autocomplete}

建立/更新 索引檔

如圖所示

如果你習慣,也可以透過 cmd+shift+p 下 Rebuild 指令。

到這裡已經可以使用 "Navigate to Definition" 的功能了,但再加上一些設定會更好。

進階設定

設定 git ignore

首先要說一件事,如果你從 command line 自己下 ctags 指令時,預設檔名是 tags。但由於 tags 也是很常見的名稱,常常造成衝突,因此現在大多習慣用 .tags 取代之,sublime CTags 外掛也遵循這個慣例。

各 project 一一放到 .gitignore 也可以,但通常大家手上都很多 projects,而且基本上很少有與 .tags 名稱衝突的檔案,因此我直接設到 gitignore_global。

如果你還沒有 .gitignore_global 檔案,請先設定,詳細可參考 Ignoring files

git config --global core.excludesfile ~/.gitignore_global

~/.gitignore_global 的寫法基本上就跟各 project 下的 .gitignore 寫法一樣,但這個會跨 projects。

在裡面加入:

/.tags/.gemtags/.tags_sorted_by_file

讓 sublime 搜尋關鍵字時不要找 .tags 的內容

由於 .tags 也是純文字檔,全 project 搜尋時也會找到其內容,而且因為是 . 開頭,通常都蠻前面的,有點惱人。因此用 User Preference 將這幾個檔案排除,除了搜尋不到,也會從左側檔案列表內消失。

選單 Sublime Text > Prefences > Settings - User
{  ...,  "file_exclude_patterns": [".tags", ".tags_sorted_by_file", ".gemtags"],  ...}

追到 gems 的 source code 裡去

註:這是針對 Ruby/Rails 的功能。

在 project 根目錄執行

ctags -R -f .gemtags $(bundle list --paths)

這招參考自 ctags in Rails project,裡面提到可以做成 alias,但我這麼做並執行完,老是會跳到最後一個 gem 的目錄,還不知道怎麼解。

雖然有人把這個作法直接包一層取代 ctags 指令,但相關方法我設定失敗,加上考慮到這麼做會讓每次 rebuild 都會花很多時間在沒有變動 (gems) 的 code 上,因此我沒有採用。

有興趣的話,可以看看

我最後的方案是:

  • Sublime Text 用 /usr/local/bin/ctags
  • 若想更新來自 gems 的內容,在 Project 目錄下執行 ctags_ruby_enhance
ctags_ruby_enhance # (放在 PATH 可吃到的目錄下)
#!/bin/bash/usr/local/bin/ctags -R -f .tags .if [ -f ./Gemfile ]  then    /usr/local/bin/ctags -R -f .gemtags $(bundle list --paths)fi

(這個段落有重寫過)

其他

鍵盤快速鍵

請參考 官方文件 Commands Listing 段落

或照老方法設定 key binding

你用的 Theme 是什麼?

  • Theme 是 Theme - Nexus,可以透過 Package Control 找到。
  • Color Scheme 是 Theme - Nil / Tubnil,不過我最近的新歡是 Tomorrow Color Scheme / Night Bright,都可以透過 Package Control 找到。

你的側欄的右鍵選單好像多出很多功能?

安裝 SideBarEnhancements

以上

最近還玩了一下 sublime_debugger:sublime 跟 ruby-debugger/byebug 整合,做到類似 Visual Studio 的強大 debug 功能(擁有 break point、逐行執行、區域變數列表、immediate evaluate 等等功能),如果有空的話希望也能寫成一篇啊啊啊啊啊啊

2014-03-04 UPDATE: 已寫 => 安裝 Sublime Text 3 互動式 Ruby Debug 外掛

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
sublime text ctags 不能正常跳转 can't find any relevent tags file 【附ctags插件完整安装步骤】
Ubuntu下Sublime Text 3 和搜狗拼音输入法安装全套解决方案
Sublime Text 3设置吊炸天PHP开发环境
ctags为系统头文件目录生成tags
在window7下使用vi + ctags + cscope + taglist
Code Completion with VIM 7 ? Les Harris
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服