最全面的 Sublime Text 使用指南

Lucida發表於2016-01-05

摘要(Abstract)

本文系統全面的介紹了Sublime Text,旨在成為最優秀的Sublime Text中文教程。

前言(Prologue)

Sublime Text是一款跨平臺程式碼編輯器(Code Editor),從最初的Sublime Text 1.0,到現在的Sublime Text 3.0,Sublime Text從一個不知名的編輯器演變到現在幾乎是各平臺首選的GUI編輯器。而這樣優秀的編輯器卻沒有一個靠譜的中文教程,所以我試圖通過本文彌補這個缺陷。

編輯器的選擇(Editor Choices)

從初學程式設計到現在,我用過的編輯器有EditPlus、UltraEdit、Notepad++、Vim、TextMate和Sublime Text,如果讓我從中推薦,我會毫不猶豫的推薦Vim和Sublime Text,原因有下面幾點:

  1. 跨平臺:Vim和Sublime Text均為跨平臺編輯器(在Linux、OS X和Windows下均可使用)。作為一個程式設計師,切換系統是常有的事情,為了減少重複學習,使用一個跨平臺的編輯器是很有必要的。
  2. 可擴充套件:Vim和Sublime Text都是可擴充套件的(Extensible),幷包含大量實用外掛,我們可以通過安裝自己領域的外掛來成倍提高工作效率
  3. 互補:Vim和Sublime Text分別是命令列環境(CLI)和圖形介面環境(GUI)下的最佳選擇,同時使用兩者會大大提高工作效率。

個人背景(Personal Background)

我是一名非常典型的程式設計師:平時工作主要在Linux環境下使用Java和Python,偶爾會用HTML+CSS+JavaScript編寫網頁;業餘時會在Windows環境編寫一些C#程式(包括控制檯程式(Console Application)和移動應用(Mobile App),也會玩一些非主流語言(比如Haskell,ML和Ruby等)以擴充見識。

所以這篇文章會我的個人工作內容為主要使用場景(Scenario),儘管無法覆蓋到所有的使用場景,但我認為依然可以覆蓋到絕大部分,如果您認為我遺漏了什麼內容,請在文章下面回覆,我會盡量更新。

本文風格(Writing Style)

受益於K&R C的寫作風格,我傾向於以實際案例來講解Sublime Text的功能,所以本文中的例子均源於我在實際開發時遇到的問題。

此外,把本文會使用大量動畫(GIF)演示Sublime Text的編輯功能,因為我發現圖片難以演示完整的編輯流程(Workflow),而視訊又過於重量級。本文的GIF動畫均使用ScreenToGif進行錄製。

編輯器(Editor) vs 整合開發環境(Integrated Development Environment,下文簡稱IDE)

我經常看到一些程式設計師拿編輯器和IDE進行比較,諸如Vim比Eclipse強大或是Visual Studio太慢不如Notepad++好使之類的討論比比皆是,個人認為這些討論沒有意義,因為編輯器和IDE根本是面向兩種不同使用場景的工具:

編輯器面向無語義的純文字,不涉及領域邏輯,因此速度快體積小,適合編寫單獨的配置檔案和動態語言指令碼(Shell、Python和Ruby等)。

IDE面向有語義的程式碼,會涉及到大量領域邏輯,因此速度偏慢體積龐大,適合編寫靜態語言專案(Java、C++和C#等)。

我認為應當使用正確的工具去做有價值的事情,並把效率最大化,所以我會用Eclipse編寫Java專案,用Vim編寫Shell,用Sublime Text編寫JavaScript/HTML/Python,用Visual Studio編寫C#。

前言到此結束,下面進入正題。

安裝(Installation)

Sublime Text官方網站提供了Sublime Text各系統各版本的下載,目前Sublime Text的最新版本是Sublime Text 3。這裡以Windows版本的Sublime Text安裝為例。

注意在安裝時勾選Add to explorer context menu,這樣在右鍵單擊檔案時就可以直接使用Sublime Text開啟。

新增Sublime Text到環境變數

使用Win + R執行sysdm.cpl開啟“系統屬性”。

然後在“高階”選項卡里選擇“環境變數”,編輯“Path”,增加Sublime Text的安裝目錄(例如D:\Program Files\Sublime Text 3)。

接下來你就可以在命令列裡面利用subl命令直接使用Sublime Text了:

subl file :: 使用Sublime Text開啟file檔案
subl folder :: 使用Sublime Text開啟folder資料夾
subl . :: 使用Sublime Text當前資料夾

安裝Package Control

前文提到Sublime Text支援大量外掛,如何找到並管理這些外掛就成了一個問題,Package Control正是為了解決這個問題而出現的,利用它我們可以很方便的瀏覽、安裝和解除安裝Sublime Text中的外掛。

進入Package Control的官網,裡面有詳細的安裝教程。Package Control支援Sublime Text 2和3,本文只給出3的安裝流程:

  • 使用Ctrl + `開啟Sublime Text控制檯。
  • 將下面的程式碼貼上到控制檯裡:
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

等待Package Control安裝完成。之後使用Ctrl + Shift + P開啟命令板,輸入PC應出現Package Control:

成功安裝Package Control之後,我們就可以方便的安裝使用Sublime Text的各種外掛:

購買(Purchase)

Sublime Text是一個收費閉源軟體,這在一定程度上成為了我支援Sublime Text的理由(我心中的軟體靠譜程度:免費開源 << 免費閉源 < 收費開源 < 收費閉源):在這裡購買。

不過不購買Sublime Text也可以“正常”使用它,只是Sublime Text會時不時的彈出一個對話方塊提醒你購買,此外視窗處會有一個很屌絲很low逼的(UNREGISTERED)。(在高頻操作下,一般20分鐘提示一次,個人認為算是很厚道了)

也許不少人會覺著Sublime Text 70刀的價格太貴,但相比它的功能和帶來的效率提升,70刀真的不值一提,如果你不方便使用Paypal付款可以郵件聯絡我,你支付寶給我打款然後我幫你付款,價格按當日匯率折算(450元左右)。

概覽(Tour)

基本概念(Basic Concepts)

Sublime Text的介面如下:

檢視原圖

  • 標籤(Tab):無需介紹。
  • 編輯區(Editing Area):無需介紹。
  • 側欄(Side Bar):包含當前開啟的檔案以及資料夾檢視。
  • 縮圖(Minimap):如其名。
  • 命令板(Command Palette):Sublime Text的操作中心,它使得我們基本可以脫離滑鼠和選單欄進行操作。
  • 控制檯(Console):使用Ctrl + `調出,它既是一個標準的Python REPL,也可以直接對Sublime Text進行配置。
  • 狀態列(Status Bar):顯示當前行號、當前語言和Tab格式等資訊。

配置(Settings)

與其他GUI環境下的編輯器不同,Sublime Text並沒有一個專門的配置介面,與之相反,Sublime Text使用JSON配置檔案,例如:

{
    "font_size": 12,
    "highlight_line": true,
}

會將預設字型大小調整為12,並高亮當前行。

JSON配置檔案的引入簡化了Sublime Text的介面,但也使得配置變的複雜,一般我會到這裡檢視可用的Sublime Text配置。

編輯(Editing)

Sublime Text的編輯十分人性化——它不像Vim那樣反人類(儘管我也用Vim但我還是要說Vim的快捷鍵設定絕壁連代謝產物都不如),少量的快捷鍵就可以完成絕大多數編輯任務。

基本編輯(Basic Editing)

↑↓←→就是↑↓←→,不是KJHL,(沒錯我就是在吐槽Vim,尼瑪設成WSAD也比這個強啊),貼上剪下複製均和系統一致。

Ctrl + Enter在當前行下面新增一行然後跳至該行;Ctrl + Shift + Enter在當前行上面增加一行並跳至該行。

Ctrl + ←/→進行逐詞移動,相應的,Ctrl + Shift + ←/→進行逐詞選擇。

Ctrl + ↑/↓移動當前顯示區域,Ctrl + Shift + ↑/↓移動當前行。

選擇(Selecting)

Sublime Text的一大亮點是支援多重選擇——同時選擇多個區域,然後同時進行編輯。

Ctrl + D選擇當前游標所在的詞並高亮該詞所有出現的位置,再次Ctrl + D選擇該詞出現的下一個位置,在多重選詞的過程中,使用Ctrl + K進行跳過,使用Ctrl + U進行回退,使用Esc退出多重編輯。

多重選詞的一大應用場景就是重新命名——從而使得程式碼更加整潔。儘管Sublime Text無法像IDE(例如Eclipse)那樣進行自動重新命名,但我們可以通過多重選詞+多重編輯進行直觀且便捷的重新命名:

有時我們需要對一片區域的所有行進行同時編輯,Ctrl + Shift + L可以將當前選中區域打散,然後進行同時編輯:

有打散自然就有合併,Ctrl + J可以把當前選中區域合併為一行:

查詢&替換(Finding&Replacing)

Sublime Text提供了強大的查詢(和替換)功能,為了提供一個清晰的介紹,我將Sublime Text的查詢功能分為快速查詢、標準查詢和多檔案查詢三種型別。

快速查詢&替換

多數情況下,我們需要查詢文中某個關鍵字出現的其它位置,這時並不需要重新將該關鍵字重新輸入一遍然後搜尋,我們只需要使用Shift + ←/→或Ctrl + D選中關鍵字,然後F3跳到其下一個出現位置,Shift + F3跳到其上一個出現位置,此外還可以用Alt + F3選中其出現的所有位置(之後可以進行多重編輯,也就是快速替換)。

標準查詢&替換

另一種常見的使用場景是搜尋某個已知但不在當前顯示區域的關鍵字,這時可以使用Ctrl + F調出搜尋框進行搜尋:

以及使用Ctrl + H進行替換:

關鍵字查詢&替換

對於普通使用者來說,常規的關鍵字搜尋就可以滿足其需求:在搜尋框輸入關鍵字後Enter跳至關鍵字當前游標的下一個位置,Shift + Enter跳至上一個位置,Alt + Enter選中其出現的所有位置(同樣的,接下來可以進行快速替換)。

Sublime Text的查詢有不同的模式:Alt + C切換大小寫敏感(Case-sensitive)模式,Alt + W切換整字匹配(Whole matching)模式,除此之外Sublime Text還支援在選中範圍內搜尋(Search in selection),這個功能沒有對應的快捷鍵,但可以通過以下配置項自動開啟。

"auto_find_in_selection": true

這樣之後在選中文字的狀態下範圍內搜尋就會自動開啟,配合這個功能,區域性重新命名(Local Renaming)變的非常方便:

使用Ctrl + H進行標準替換,輸入替換內容後,使用Ctrl + Shift + H替換當前關鍵字,Ctrl + Alt + Enter替換所有匹配關鍵字。

正規表示式查詢&替換

正規表示式是非常強大的文字查詢&替換工具,Sublime Text中使用Alt + R切換正則匹配模式的開啟/關閉。Sublime Text的使用Boost裡的Perl正規表示式風格

出於篇幅原因,本文不會對正規表示式進行詳細介紹,Mastering Regex(中譯本:精通正規表示式)對正規表示式的原理和各語言下的使用進行了詳細介紹。此外網上有大量正規表示式的優秀教程(“正規表示式30分鐘入門教程”和MSDN正規表示式教程.aspx)),以及線上測試工具(regexpalregexer)。

多檔案搜尋&替換

使用Ctrl + Shift + F開啟多檔案搜尋&替換(注意此快捷鍵和搜狗輸入法的簡繁切換快捷鍵有衝突):

多檔案搜尋&替換預設在當前開啟的檔案和資料夾進行搜尋/替換,我們也可以指定檔案/資料夾進行搜尋/替換。

跳轉(Jumping)

Sublime Text提供了強大的跳轉功能使得我們可以在不同的檔案/方法/函式中無縫切換。就我的使用經驗而言,目前還沒有哪一款編輯器可以在這個方面超越Sublime Text。

跳轉到檔案

Ctrl + P會列出當前開啟的檔案(或者是當前資料夾的檔案),輸入檔名然後Enter跳轉至該檔案。

需要注意的是,Sublime Text使用模糊字串匹配(Fuzzy String Matching),這也就意味著你可以通過檔名的字首、首字母或是某部分進行匹配:例如,EIS、Eclip和Stupid都可以匹配EclipseIsStupid.java。

跳轉到符號

儘管是一個文字編輯器,Sublime Text能夠對程式碼符號進行一定程度的索引。Ctrl + R會列出當前檔案中的符號(例如類名和函式名,但無法深入到變數名),輸入符號名稱Enter即可以跳轉到該處。此外,還可以使用F12快速跳轉到當前游標所在符號的定義處(Jump to Definition)。

比較有意思的是,對於Markdown,Ctrl + R會列出其大綱,非常實用。

跳轉到某行

Ctrl + G然後輸入行號以跳轉到指定行:

組合跳轉

在Ctrl + P匹配到檔案後,我們可以進行後續輸入以跳轉到更精確的位置:

  1. @ 符號跳轉:輸入@symbol跳轉到symbol符號所在的位置
  2. # 關鍵字跳轉:輸入#keyword跳轉到keyword所在的位置
  3. : 行號跳轉:輸入:12跳轉到檔案的第12行。

所以Sublime Text把Ctrl + P稱之為“Go To Anything”,這個功能如此好用,以至於我認為沒有其它編輯器能夠超越它。

中文輸入法的問題

從Sublime Text的初版(1.0)到現在(3.0 3065),中文輸入法(包括日文輸入法)都有一個問題:輸入框不跟隨。

目前官方還沒有修復這個bug,解決方法是安裝IMESupport外掛,之後重啟Sublime Text問題就解決了。

資料夾(Folders)

Sublime Text支援以資料夾做為單位進行編輯,這在編輯一個資料夾下的程式碼時尤其有用。在File下Open Folder:

你會發現右邊多了一個側欄,這個側欄列出了當前開啟的檔案和資料夾的檔案,使用Ctrl + K, Ctrl + B顯示或隱藏側欄,使用Ctrl + P快速跳轉到資料夾裡的檔案。

視窗&標籤(Windows & Tabs)

Sublime Text是一個多視窗多標籤編輯器:我們既可以開多個Sublime Text視窗,也可以在一個Sublime Text視窗內開多個標籤。

視窗(Window)

使用Ctrl + Shift + N建立一個新視窗(該快捷鍵再次和搜狗輸入法快捷鍵衝突,個人建議禁用所有搜狗輸入法快捷鍵)。

當視窗內沒有標籤時,使用Ctrl + W關閉該視窗。

標籤(Tab)

使用Ctrl + N在當前視窗建立一個新標籤,Ctrl + W關閉當前標籤,Ctrl + Shift + T恢復剛剛關閉的標籤。

編輯程式碼時我們經常會開多個視窗,所以分屏很重要。Alt + Shift + 2進行左右分屏,Alt + Shift + 8進行上下分屏,Alt + Shift + 5進行上下左右分屏(即分為四屏)。

分屏之後,使用Ctrl + 數字鍵跳轉到指定屏,使用Ctrl + Shift + 數字鍵將當前屏移動到指定屏。例如,Ctrl + 1會跳轉到1屏,而Ctrl + Shift + 2會將當前屏移動到2屏。

全屏(Full Screen)

Sublime Text有兩種全屏模式:普通全屏和無干擾全屏。

個人強烈建議在開啟全屏前關閉選單欄(Toggle Menu),否則全屏效果會大打折扣。

F11切換普通全屏:

檢視大圖

Shift + F11切換無干擾全屏:

檢視大圖

風格(Styles)

風格對於任何軟體都很重要,對編輯器也是如此,尤其是GUI環境下的編輯器。作為一個程式設計師,我希望我的編輯器足夠簡潔且足夠個性。

Notepad++預設介面

Sublime Text預設介面

所以在用過Sublime Text之後,我立刻就卸掉了Notepad++。

Sublime Text自帶的風格是我喜歡的深色風格(也可以調成淺色),預設主題是Monokai Bright,這兩者的搭配已經很不錯了,不過我們還可以做得更好:接下來我將會展示如何通過設定偏好項和新增自定義風格/主題使得Sublime Text更加Stylish。

一些設定(Miscellaneous Settings)

下面是我個人使用的設定項。

// 設定Sans-serif(無襯線)等寬字型,以便閱讀
"font_face": "YaHei Consolas Hybrid",
"font_size": 12,
// 使游標閃動更加柔和
"caret_style": "phase",
// 高亮當前行
"highlight_line": true,
// 高亮有修改的標籤
"highlight_modified_tabs": true,

設定之後的效果如下:

主題(Themes)

Sublime Text有大量第三方主題:[https://sublime.wbond.net/browse/labels/theme],這裡我給出幾個個人感覺不錯的主題:

Soda Light

Soda Dark

Nexus

Flatland

Spacegray Light

Spacegray Dark

配色(Color)

colorsublime包含了大量Sublime Text配色方案,並支援線上預覽,配色方案的安裝教程在這裡,恕不贅述。

我個人使用的是Nexus主題和Flatland Dark配色,配置如下:

"theme": "Nexus.sublime-theme",
"color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",

效果如下:

檢視大圖

編碼(Coding)

優秀的編輯器使編碼變的更加容易,所以Sublime Text提供了一系列功能以提高開發效率。

良好實踐(Good Practices)

良好的程式碼應該是規範的,所以Google為每一門主流語言都設定了其程式碼規範(Code Style Guideline)。我自己通過下面的設定使以規範化自己的程式碼。

// 設定tab的大小為2
"tab_size": 2,
// 使用空格代替tab
"translate_tabs_to_spaces": true,
// 新增行寬標尺
"rulers": [80, 100],
// 顯示空白字元
"draw_white_space": "all",
// 儲存時自動去除行末空白
"trim_trailing_white_space_on_save": true,
// 儲存時自動增加檔案末尾換行
"ensure_newline_at_eof_on_save": true,

程式碼段(Code Snippets)

Sublime Text支援程式碼段(Code Snippet),輸入程式碼段名稱後Tab即可生成程式碼段。

你可以通過Package Control安裝第三方程式碼段,也可以自己建立程式碼段,參考這裡。

格式化(Formatting)

Sublime Text基本的手動格式化操作包括:Ctrl + [向左縮排,Ctrl + ]向右縮排,此外Ctrl + Shift + V可以以當前縮排貼上程式碼(非常實用)。

除了手動格式化,我們也可以通過安裝外掛實現自動縮排和智慧對齊:

自動完成(Auto Completion)

Sublime Text 支援一定的自動完成,按Tab自動補全。

括號(Brackets)

編寫程式碼時會碰到大量的括號,利用Ctrl + M可以快速的在起始括號和結尾括號間切換,Ctrl + Shift + M則可以快速選擇括號間的內容,對於縮排型語言(例如Python)則可以使用Ctrl + Shift + J。

此外,我使用BracketHighlighter外掛以高亮顯示配對括號以及當前游標所在區域,效果如下:

命令列(Command Line)

儘管提供了Python控制檯,但Sublime Text的控制檯僅支援單行輸入,十分不方便,所以我使用SublimeREPL以進行一些編碼實驗(Experiments)。

其它(Miscellaneous)

儘管我試圖在本文包含儘可能多的Sublime Text實用技能,但受限於篇幅和我的個人經驗,本文仍不免有所遺漏,歡迎在評論裡指出本文的錯誤及遺漏。

下面是一些可能有用但我很少用到的功能:

  • 巨集(Macro):Sublime Text支援錄製巨集,但我在實際工作中並未發現巨集有多大用處。
  • 其它平臺(Other Platforms):本文只介紹了Windows平臺上Sublime Text的使用,不過Linux和OS X上Sublime Text的使用方式和Windows差別不大,只是在快捷鍵上有所差異,請參考Windows/Linux快捷鍵和OS X快捷鍵。
  • 專案(Projects):Sublime Text支援簡單的專案管理,但我一般只用到資料夾。
  • Vim模式(Vintage):Sublime Text自帶Vim模式。
  • 構建(Build):通過配置,Sublime Text可以進行原始碼構建。
  • 除錯(Debug):通過安裝外掛,Sublime Text可以對程式碼進行除錯。

快捷鍵列表(Shortcuts Cheatsheet)

我把本文出現的Sublime Text按其型別整理在這裡,以便查閱。

通用(General)

  • ↑↓←→:上下左右移動游標,注意不是不是KJHL!
  • Alt:調出選單
  • Ctrl + Shift + P:調出命令板(Command Palette)
  • Ctrl + `:調出控制檯

編輯(Editing)

  • Ctrl + Enter:在當前行下面新增一行然後跳至該行
  • Ctrl + Shift + Enter:在當前行上面增加一行並跳至該行
  • Ctrl + ←/→:進行逐詞移動
  • Ctrl + Shift + ←/→進行逐詞選擇
  • Ctrl + ↑/↓移動當前顯示區域
  • Ctrl + Shift + ↑/↓移動當前行

選擇(Selecting)

  • Ctrl + D:選擇當前游標所在的詞並高亮該詞所有出現的位置,再次Ctrl + D選擇該詞出現的下一個位置,在多重選詞的過程中,使用Ctrl + K進行跳過,使用Ctrl + U進行回退,使用Esc退出多重編輯
  • Ctrl + Shift + L:將當前選中區域打散
  • Ctrl + J:把當前選中區域合併為一行
  • Ctrl + M:在起始括號和結尾括號間切換
  • Ctrl + Shift + M:快速選擇括號間的內容
  • Ctrl + Shift + J:快速選擇同縮排的內容
  • Ctrl + Shift + Space:快速選擇當前作用域(Scope)的內容

查詢&替換(Finding&Replacing)

  • F3:跳至當前關鍵字下一個位置
  • Shift + F3:跳到當前關鍵字上一個位置
  • Alt + F3:選中當前關鍵字出現的所有位置
  • Ctrl + F/H:進行標準查詢/替換,之後:
  • Alt + C:切換大小寫敏感(Case-sensitive)模式
  • Alt + W:切換整字匹配(Whole matching)模式
  • Alt + R:切換正則匹配(Regex matching)模式
  • Ctrl + Shift + H:替換當前關鍵字
  • Ctrl + Alt + Enter:替換所有關鍵字匹配
  • Ctrl + Shift + F:多檔案搜尋&替換

跳轉(Jumping)

  • Ctrl + P:跳轉到指定檔案,輸入檔名後可以:
  • @ 符號跳轉:輸入@symbol跳轉到symbol符號所在的位置
  • # 關鍵字跳轉:輸入#keyword跳轉到keyword所在的位置
  • : 行號跳轉:輸入:12跳轉到檔案的第12行。
  • Ctrl + R:跳轉到指定符號
  • Ctrl + G:跳轉到指定行號

視窗(Window)

  • Ctrl + Shift + N:建立一個新視窗
  • Ctrl + N:在當前視窗建立一個新標籤
  • Ctrl + W:關閉當前標籤,當視窗內沒有標籤時會關閉該視窗
  • Ctrl + Shift + T:恢復剛剛關閉的標籤

螢幕(Screen)

  • F11:切換普通全屏
  • Shift + F11:切換無干擾全屏
  • Alt + Shift + 2:進行左右分屏
  • Alt + Shift + 8:進行上下分屏
  • Alt + Shift + 5:進行上下左右分屏
  • 分屏之後,使用Ctrl + 數字鍵跳轉到指定屏,使用Ctrl + Shift + 數字鍵將當前屏移動到指定屏

延伸閱讀(Further Reading)

書籍(Books)

連結(Links)

視訊(Videos)

以上就是文章的全部內容,謝謝閱讀。

相關文章