摘要(Abstract)
本文系統全面的介紹了Sublime Text,旨在成爲最優秀的Sublime Text中文教程。
更新記錄
- 2014/09/27:完成初稿
-
2014/09/28:
-
更正打開控制檯的快捷鍵爲
Ctrl + `
-
更正全局替換的快捷鍵爲
Ctrl + Alt + Enter
-
更正打開控制檯的快捷鍵爲
前言(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,原因有下面幾點:
- 跨平臺:Vim和Sublime Text均爲跨平臺編輯器(在Linux、OS X和Windows下均可使用)。作爲一個程序員,切換系統是常有的事情,爲了減少重複學習,使用一個跨平臺的編輯器是很有必要的。
- 可擴展:Vim和Sublime Text都是可擴展的(Extensible),幷包含大量實用插件,我們可以通過安裝自己領域的插件來成倍提高工作效率。
- 互補: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了:
安裝Package Control
前文提到Sublime Text支持大量插件,如何找到並管理這些插件就成了一個問題,Package Control正是爲了解決這個問題而出現的,利用它我們可以很方便的瀏覽、安裝和卸載Sublime Text中的插件。
進入Package Control的官網,裏面有詳細的安裝教程。Package Control支持Sublime Text 2和3,本文只給出3的安裝流程:
-
使用
Ctrl + `
打開Sublime Text控制檯。 - 將下面的代碼粘貼到控制檯裏:
-
等待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配置文件,例如:
會將默認字體大小調整爲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),這個功能沒有對應的快捷鍵,但可以通過以下配置項自動開啓。
這樣之後在選中文本的狀態下範圍內搜索就會自動開啓,配合這個功能,局部重命名(Local Renaming)變的非常方便:
使用Ctrl
+ H
進行標準替換,輸入替換內容後,使用Ctrl
+ Shift + H
替換當前關鍵字,Ctrl
+ Alt + Enter
替換所有匹配關鍵字。
正則表達式查找&替換
正則表達式是非常強大的文本查找&替換工具,Sublime Text中使用Alt
+ R
切換正則匹配模式的開啓/關閉。Sublime Text的使用Boost裏的Perl正則表達式風格。
出於篇幅原因,本文不會對正則表達式進行詳細介紹,Mastering Regex(中譯本:精通正則表達式)對正則表達式的原理和各語言下的使用進行了詳細介紹。此外網上有大量正則表達式的優秀教程(“正則表達式30分鐘入門教程”和MSDN正則表達式教程.aspx)),以及在線測試工具(regexpal和regexer)。
多文件搜索&替換
使用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
匹配到文件後,我們可以進行後續輸入以跳轉到更精確的位置:
-
@
符號跳轉:輸入@symbol
跳轉到symbol
符號所在的位置 -
#
關鍵字跳轉:輸入#keyword
跳轉到keyword
所在的位置 -
:
行號跳轉:輸入: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)
下面是我個人使用的設置項。
設置之後的效果如下:
主題(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配色,配置如下:
效果如下:
編碼(Coding)
優秀的編輯器使編碼變的更加容易,所以Sublime Text提供了一系列功能以提高開發效率。
良好實踐(Good Practices)
良好的代碼應該是規範的,所以Google爲每一門主流語言都設置了其代碼規範(Code Style Guideline)。我自己通過下面的設置使以規範化自己的代碼。
代碼段(Code Snippets)
Sublime Text支持代碼段(Code Snippet),輸入代碼段名稱後Tab
即可生成代碼段。
你可以通過Package Control安裝第三方代碼段,也可以自己創建代碼段,參考這裏。
格式化(Formatting)
Sublime Text基本的手動格式化操作包括:Ctrl
+ [
向左縮進,Ctrl
+ ]
向右縮進,此外Ctrl
+ Shift + V
可以以當前縮進粘貼代碼(非常實用)。
除了手動格式化,我們也可以通過安裝插件實現自動縮進和智能對齊:
- HTMLBeautify:格式化HTML。
- AutoPEP8:格式化Python代碼。
- Alignment:進行智能對齊。
自動完成(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)
- Mastering Sublime Text:我讀過的唯一一本關於Sublime Text的書籍,書中介紹的插件很實用,但對編輯技巧介紹不全。
- Instant Sublime Text Starter:另外一本關於Sublime Text的書,我沒有讀過。
鏈接(Links)
- 官方文檔:http://www.sublimetext.com/docs/3/
- 官方論壇:http://www.sublimetext.com/forum/
- Stack Overflow的Sublime Text頻道:
- 非官方文檔:http://sublime-text-unofficial-documentation.readthedocs.org/ 甚至比官方文檔還要全面!
- Package Control:https://sublime.wbond.net/ 大量的Sublime Text插件和主題。
視頻(Videos)
- Getting Started with SublimeText:https://www.youtube.com/watch?v=04gKiTiRlq8
- Sublime Text Pefect Workflow:https://www.youtube.com/watch?v=bpEp0ePIOEM&list=PLuwqxbvf3olpLsnFvo06gbrkcEB5o7K0g
以上。