Bruce 的玩具間

my works and notes on ruby, rails, git, ubuntu linux, mac os x, etc...

Posts match “ Sublime ” tag:

讓 Sublime Text 也擁有 "Navigate to Definition" 功能 (設定 CTags)

| Comments

這篇文章現在搬到新站: 讓 Sublime Text 也擁有 "Navigate to Definition" 功能 (設定 CTags)

欲達到的功能

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

安裝

用 Homebrew 安裝 ctags

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

...

(完整內容請到新站觀看 讓 Sublime Text 也擁有 "Navigate to Definition" 功能 (設定 CTags))

安裝 Sublime Text 3 互動式 Ruby Debug 外掛

| Comments

最近發現 sublime_debugger (在 Package Control 裡叫 "Ruby Debugger") 這個外掛,是我一直非常期待的功能之一:

類似 Visual Studio 的強大互動式 Debug 介面

背景

不知道有多少人玩過類似這樣的東西:

Rails Guides - Debugging Rails Applications 裡就有收錄類似工具的教學,但可能是因為文字介面,功能又很多,感覺好像很複雜,導致很多人都不願去用它。

現在有整合到 Sublime Text 3 的外掛,當然要開始孜孜不倦的推坑了(?)

這篇是入門教學,如果你用起來覺得不錯,可以看 sublime_debugger 的 READMERails Guides 的 Debugging Rails Applications 篇 來了解更多。

(寫這篇的時候,sublime_debugger 才三個月大,但目前已經有堪用的版本,而且作者也持續開發中。我自己測過 Ruby 1.9.3 + Rails 3.2 與 Ruby 2.0.0 + Rails 4.0 都沒問題)

安裝

安裝指定的 debugger gem

  • Ruby 1.9.3 => gem install debugger
  • Ruby 2.0.0 => gem install byebug --version '>=2.5.0'

也可以加到 Gemfile 並跑 bundle install

透過 Package Control 安裝 Ruby Debugger 外掛

  • 目前 Ruby Debugger 外掛只支援 Sublime Text 3(在 Mac 上可跟 Sublime Text 2 並存)
  • 如果你的 Sublime Text 3 還沒有安裝 Package Control,請先安裝
  • 透過 Package Control 安裝 Ruby Debugger 外掛

使用

開始 debugging rails(Start debugging 則是對純 ruby 檔案 debug)

等幾秒後,會看到 Output 視窗出現開啟 web server 的熟悉訊息。需注意如果你的 project 很大的話,這邊的啟動會非常久,第一次試用可以先找小 project 來玩。

另外,按 F9 可以設定 break point (中斷點),不想記快速鍵的話,右鍵選單裡也有。

一些常見問題:

  • 有些版本會在這步停在 rails 啟動的 code,此時就 F10 一路執行過去,直到讓他順利開啟 web server。
  • 如果你已經在 port 3000 自己開了 server 就會衝到,請把自己開的 web server 關掉。
  • sublime_debugger 目前仍有不穩的狀況,有時候 web server 會卡在那邊關不掉。遇到這種狀況可以把佔用 port 3000 的 process 找出來並砍掉。或直接 killall ruby 並一一重開。
  • 如果有遇到其他問題,除了試試看重開,也可以搜尋一下有沒有相關 issue 討論。

接下來,切到瀏覽器,瀏覽會觸發 break point 的頁面:

(在這個例子裡,/home 是指到 videos#index)

接下來你就可以用 F10 (Step Over)、F11 (Step Into) 來逐行執行。
由於 F11 是 Show Desktop 的快速鍵,如果你的 Mac OS X 版本有預設開啟的話,記得去把它關掉。

除了逐行執行,還有一些常用的功能,例如持續監看某指令的執行結果:

現在 category 的執行結果是錯誤(因為執行到這行的時候,的確還沒有定義 category)。那麼現在我們跳進迴圈:

此時就抓到 category

tips: 底下的視窗預設不會自動換行,要開啟可以用 cmd+shift+p 並執行 Word Wrap: Toggle

Immediate (即時執行) 也是很常用的功能

其他還有 Locals (區域變數列表)、Stack 等功能,這邊就不介紹了。

再來是「善後」:

還有一點值得一提,debugger 不僅可以拿來 debug,還有一個很棒的價值:

追別人的 code

有時候維護別人的 code、用別人的 gem,甚至是剛學程式的人,無法理解為什麼會跑出某種不符預期的結果時,就可以用 debugger 跑一遍,很直覺、好理解、也可以很詳細的查看變數狀態。

實際上我高職初學程式時,就很常玩 VB 6.0 IDE 的這個功能,幫助我瞭解控制流程的基本觀念很多。在前一篇 應徵 Rails 工作的心得 也提到,即使高職讀資處科,也不見得每個人都會認真學程式,光是課堂上、模擬考出現的,都遠遠不及親自動手玩來得有幫助。

Rails Guides 也有提到類似的點

The debugger can also help you if you want to learn about the Rails source code but don't know where to start.

現在就把 sublime_debugger 裝起來玩玩吧 \(☉▽☉)/

讀 Sublime Text 3 文件學到的新招

| Comments

摸熟你的開發工具是很重要的,每天都用沒效率的方法做事,長期下來很浪費時間。最近我在看《程式設計師提升生產力秘笈》一書,裡面當然也提到這個老生常談,剛好就卯起來把 Sublime Text 3 官方文件 看完了 (除了開發 API 章節),這邊整理出一些我以前還不知道的好用技巧。

不過這份文件其實很短,每一節大概都只有一個螢幕長度而已,應該比較適合新手一開始就看。也就是說,設定部分還是要親自讀一遍 Settings - Default,快速鍵則建議讀非官方文件,好用外掛或特殊設定則要搜尋看看,例如 讓 Sublime Text 也擁有 "Navigate to Definition" 功能安裝 Sublime Text 3 互動式 Ruby Debug 外掛 其實從網路上找到提示才試出來的。

警語:《程式設計師提升生產力秘笈》翻譯不太通順,如果弄得到英文版的話可考慮直接讀英文版。

多行選擇相關

一次選擇多行以後按 Command+Shift+L 即可把輸入點切成每行一個

Command+D 選擇 occurrences 時

  • 不小心選多了可以用 Command+U 倒車
  • Command+K,Command+D 跳過某個 (剛選到的) occurrence
  • 做完多行操作後,按 Esc 回到單輸入點模式

自動完成相關

  • 由於 ctrl+space 在 mac 上會跟 spotlight 快捷鍵衝突,應改掉 個人習慣改成 Command+/ 發現會跟 toggle comment 衝突,不過我發現我也很少手動 toggle 自動完成
  • 出現自動完成選單時,按 tab 會自動完成,但若真的想輸入 tab 字元的話,可以用 Shift+tab

Project

Sublime 有個 Project 選單,但好像不多人用,我也只亂玩過一下而已。但這次看到一個功能我覺得值得嘗試:

Settings 可以寫在 project 設定檔裡,這樣就可以讓所有人都使用相同的設定,例如 tab 轉 2 個 spaces、trim trailing space、newline at eof 等 coding style 問題。

過去不常使用快速鍵者

如果你有心想記起快速鍵,打開選單看到快速鍵提示後,關掉選單,用快速鍵做。浪費幾次時間以後就會記住了,接下來節省的時間絕對可以賺回來。(《程式設計師提升生產力秘笈》建議的方法)

也可以把常用又想記住的快速鍵印出來貼在座位旁邊,快速查找。(我之前用白板筆寫在玻璃 OA 隔板上)