Sublime Text 教學

筆者按: 網路上關於 Sublime 的教學其實已經多如繁星, 所以本篇說為教學, 充其量目的也只是敝人的備忘錄而已 (笑)。

引言

在前公司待了三年多快四年, 一直都是在 Windows 上透過 SSH 連到 Linux 的 build server 做開發, 常使用的語言為 C++、C, 而在前公司最普遍的 trace code 工具是有名的 Source Insight, 但對我來說有以下的缺點:

  1. 非跨平台
    我個人電腦使用的環境是 OSX, 所以對於開發工具需在公司跟家裡做切換, 使用的意願上其實是非常低, 不外乎在工具的使用也是有所謂的學習曲線, 需分散心力來維持兩套是滿浪費精力的。 (要在 Mac 上執行 Windows 程式就我所知也有三種方式, 一種是安裝雙系統共存, 再來是使用虛擬機器VMWare, 最後則是透過 Wine 來安裝, 但會喜歡使用 Mac 的人其實對優雅都有種偏執, 所以我想還是能省則省吧!)。
  2. 使用介面非常醜
    這可能主觀意識成分居多, 而且多半應該是來自一種對於 Windows 視窗樣式的厭惡吧! 但気持ち (Kimochi) 有時也是這麼重要~ (攤)。
  3. 要$$
    雖然公司都..., 嗯, 我什麼都沒說。
  4. 笨重
    匯入專案以及建立 Source tree 需要滿長的時間 (尤其是龐大的專案時), 加上使用起來一直有種跟不上思緒的頓感 (哈味)。
  5. 模糊搜尋做得不夠好
    小弟記憶力一直不太好, 所以這功能也滿在意的。

最後當工作快滿一年的時候, 經由一位快離職的同事分享, 開始認識了 Sublime, 也就一直擁抱到現在了。


Step 1. Install Sublime

首先可以先至官網抓取最新的版本 Sublime2Sublime3, 跟一般平台上的應用程式安裝方式無異 (所以這邊省略讓各位自行摸索一下), 接著要 安裝最重要的套件 Package Control x3 (筆者懶得打三遍, 但希望你們明白這真的很重要!), 有點類似 Ubuntu 的 apt-get、Mac 的 Homebrew、Python 的 Pip、Node.js 的 npm 關係, 這是一個屬於 Sublime 套件管理的 Plugin (由於實在太方便了, 沒意外的話應該是每個用戶必先安裝, 除非天生反骨)。

Step 2. Install Package Control

Package Control的安裝方式也很簡易 Package Control安裝頁面 有提供 Sublime Text 2 跟 Sublime Text 3 的 Command, 執行 Sublime 後按 Ctrl + ` (`是鍵盤最左上角那個) 叫出 Sublime 的 Console Panel (或是透過操作畫面上方的 Menu 選單 View -> Show Console 也可以叫出)

複製貼上你下載版本的指令進去按 Enter 即可 (注意不要複製到行尾或行頭多餘空白格), 安裝完成之後可以再按一次按 Ctrl + ` 或是 ESC 關掉Console。

此時已經可以執行 Package Control 的相關指令, 方式一樣是兩種 (這部分的操作很頻繁, 所以筆者平時都是以快速鍵操作為主)

  1. 透過操作畫面上方的 Menu 選單 Sublime Text -> Preference -> Package Control
  2. Ctrl/Cmd(Windows/Mac) + Shift + P

出現輸入框後, 可以針對 Package的操作輸入以下 Keywords (ex. install、remove、list)

常見的操作說明如下

  • List Package: 列出已安裝的 Package (這邊可以試著鍵入 list, 輸入框的模糊搜尋會幫你選取到match 的指令, 相當方便的使用者體驗)
  • Install Package: 左下會有個移動的等號 "=" 表示正在搜尋可以安裝的Package, 耐心等待跑完之後, 會彈出類似下拉式的選單供選擇 (挑選欲安裝的Package一樣可以鍵入關鍵字, 讓模糊搜尋幫助你挑選)
  • Remove Package: 列出已安裝的Package, 提供選取刪除

另外, 在挑選 Plugin 安裝的部分, 除了可以先上網看看相關領域開發者都推薦使用的之外, 也可上 Package Control 官網 透過一些關鍵字來尋找, 跟在Sublime裡面搜尋的差別在於, 官網上的會提供 Rank 讓你知道這個 Package 被安裝的熱門程度, 較多人使用的 Plugin 在維護跟品質上都相對比較有保障。

Cmd = Command key define in Mac Keyboard

Ctrl/Cmd(Windows/Mac) + Shift + P, 透過這組快速鍵叫出來的是 Sublime 的 Command Palette (也可從 Menu 選單裡的 Tool 選項叫出來), 透過這個 Command Palette 可用來呼叫許多其他 Plugin 預設的功能, 所以絕大部份的時候只需要記得這個快速鍵, 就已經相當方便了。

Ex. git plugin也是在這個輸入框內做操作

Step 3. 推薦一些筆者安裝使用的套件

(這裡先介紹一般通用的套件)

透過 Package Control 都可以輕易的 Install 以下的 Plugin 協助你提升工作效率, 而需注意的是部分 Plugin 安裝之後, 有時會需要做一些客製化的調整 (例如修改 Package Setting 檔, 從 Menu 選單 Preferences -> Package Setting -> 挑選你要修改的 Plugin)

筆者似乎從 Sublime Text 3 開始就不能直接修改 Default 的 Setting, 需要打開 User 的 Setting 來做變更 (如上圖), 不過這也是建立良好修改習慣的開始。


HighlightWords

這個套件的使用來自於 Source Insight 裡我覺得很方便的功能, 在 Source Insight 裡透過 Shift + F8 來常駐 (持續性) 的標記某個單詞 (同時也會標記這整個文本裡所有出現的地方, 有助於 trace code), 但在 Sublime 中, 雖然選取文字時會幫你標記, 但滑鼠點擊它處則標記即消失, 無法保持持續標記 (Highlight) 的狀態, 另外在剛接觸這個套件的版本所提供的方式, 是透過快速鍵後只會彈出最下排一個輸入框, 提供輸入想標記的單詞, 而要取消標記也是刪除這輸入框裡的內容, 隨著我跟前同事私下研究改進, 目前已可透過 Cmd + Shift + H 來 Highlight 游標目前停留的字詞, 並對同樣的字詞再按一次快速鍵則取消標記, 使用方式已與Source Insight無異, 甚至更好用。


BracketHighlighter

Trace code 滿常需要的除了前面標記變數的功能以外, 另外也需要幫忙判斷括號從哪括到哪, 這Plugin就提供了這樣的的幫助。

注意, 這邊筆者會將Setting修改成如下, 以呈現較佳的視覺效果

"default": {
"icon": "dot",
// BH1's original default color for reference
"color": "entity.name.class",
//"color": "brackethighlighter.default",
"style": "block"
},

Ctags

也是在 trace code 方面個人覺得非常好用的 Plugin 之一, 先介紹 ctags 本身是一個專門幫忙對 soruce code、header file 產生 index file 用的工具, 且在一開始最早僅支援 C, 後來延伸至今已可支援以下語言

Ant、Asm、Asp、Awk、Basic、BETA、C、C++、C#、Cobol、DosBatch、Eiffel、Erlang、Flex、Fortran、HTML、Java、JavaScript、Lisp、Lua、Make、MatLab、OCaml、Pascal、Perl、PHP、Python、REXX、Ruby、Scheme、Sh、SLang、SML、SQL、Tcl、Tex、Vera、Verilog、VHDL、Vim、YACC

可以透過 Shell 底下的 Command 來查詢支援的語言

ctags --list-languages  

另外 ctags 本身也可以支援對語言或副檔名做延伸的定義

ex. 在Sublime中使用的話, 在 Ctags 的 Plugin Setting 內加入下面這句 (等於將後面參數傳給 ctags )

"opts" : ["--langmap=C:+.mq4", "--extra=+q", "--fields=+Saim", "--c-kinds=+lpx", "--c++-kinds=+lpx", "-R"],
  • --extra=+q --fields=+Saim 指名要建立的 tags 包含 Class 內 member 的資訊
  • --c-kinds=+lpx --c++-kinds=+lpx 是用來對底下參數打開
    • l local variables [off]
    • p function prototypes
    • x external and forward variable declarations [off]
  • -R 則是整個目錄底下遞迴的方式去循環查找建立 index
  • --langmap=C:+.mq4 是筆者想針對 MT4 平台開發程式, 副檔名使用的是 mq4, 但語法本身很接近 C 語言, 所以 extend C parser 來幫忙建立 tag file

另外透過以下指令可以看 ctags 對每個語言建立 index 的詳細程度, 部分可供 On/Off

ctags --list-kinds  

以上大概介紹完ctags可以做到的事後, 就要開始介紹如何安裝。

  • Mac Shell : brew install ctags (Mac 有自帶的 ctags 但無法使用, 記得要抓新的, 筆者使用的是 Exuberant Ctags 5.8)
  • Ubuntu Shell: apt-get install ctags
  • Windows: 有點久遠, 大概有執行可以抓下來安裝吧

裝完之後記得修改User Setting加入

"command": "/usr/local/Cellar/ctags/5.8_1/bin/ctags",

後面字串需對應到實際安裝 ctags 的執行檔路徑, 這樣便可以開始建立 index 使用了。


Block Cursor Everywhere

在文字編輯器內要尋找鍵盤的游標有時候也是種困擾, 這個 Plugin 可以幫忙在 Vim 指令 mode 下提供 方塊形 的鍵盤游標。

Vim Mode

如果有使用過Linux開發的話, 常用的 Console 文字編輯器有兩套 Vi/Vim or Emac (筆者是只接觸過 vim), 在 Vim 底下有提供兩種 mode: 指令 mode 以及編輯 mode, 以往已經使用習慣 Vim 的朋友可以透過修改 Sublime 的 Setting file 模擬 Vim, 分別是將

"ignored_packages": ["Vintage"], 中的 Vintage 拿掉 (切換成可支援 Vim mode)

"vintage_start_in_command_mode": true, 加入這行, (開啟檔案時會優先啟動 Vim 的 command mode), 這個 Plugin 是搭配 Vintage 使用, 可以幫忙快速定位到目前游標的位置, 加速編輯上的效率。


最後下面是筆者習慣的 Theme 跟 Color Schemes , Theme 是整個軟體介面的主題樣式, 而 Color Scheme 是用來做語法上色時的配色樣本, 網路都有一些常用或是推薦的樣式, 甚至已經幫忙整理好預覽圖, 都可以從而參考找出自己需要的。

Theme - Soda

"soda_classic_tabs": true,
"theme": "Soda Dark 3.sublime-theme",

(Add to Preferences.sublime-settings)

Tomorrow Color Schemes

"color_scheme": "Packages/Tomorrow Color Schemes/Tomorrow-Night.tmTheme",

(Add to Preferences.sublime-settings)

Captain Vincent

Read more posts by this author.