本文系統全面的介紹了 Sublime Text,旨在成爲最優秀的 Sublime Text 中文教程。html
Ctrl + `
Ctrl + Alt + Enter
Sublime Text 是一款跨平臺代碼編輯器(Code Editor),從最初的 Sublime Text 1.0,到如今的 Sublime Text 3.0,Sublime Text 從一個不知名的編輯器演變到如今幾乎是各平臺首選的 GUI 編輯器。而這樣優秀的編輯器卻沒有一個靠譜的中文教程,因此我試圖經過本文彌補這個缺陷。java
從初學編程到如今,我用過的編輯器有 EditPlus、UltraEdit、Notepad++、Vim、TextMate 和 Sublime Text,若是讓我從中推薦,我會絕不猶豫的推薦 Vim 和 Sublime Text,緣由有下面幾點:程序員
我是一名很是典型的程序員:平時工做主要在 Linux 環境下使用 Java 和 Python,偶爾會用 HTML+CSS+JavaScript 編寫網頁;業餘時會在 Windows 環境編寫一些 C# 程序(包括控制檯程序(Console Application)和移動應用(Mobile App),也會玩一些非主流語言(好比 Haskell,ML 和 Ruby 等)以拓展見識。正則表達式
因此這篇文章會個人我的工做內容爲主要使用場景(Scenario),儘管沒法覆蓋到全部的使用場景,但我認爲依然能夠覆蓋到絕大部分,若是您認爲我遺漏了什麼內容,請在文章下面回覆,我會盡可能更新。express
受益於 K&R C 的寫做風格,我傾向於以實際案例來說解 Sublime Text 的功能,因此本文中的例子均源於我在實際開發時遇到的問題。編程
此外,把本文會使用大量動畫(GIF)演示 Sublime Text 的編輯功能,由於我發現圖片難以演示完整的編輯流程(Workflow),而視頻又過於重量級。本文的GIF動畫均使用 ScreenToGif 進行錄製。sublime-text
我常常看到一些程序員拿編輯器和 IDE 進行比較,諸如 Vim 比 Eclipse 強大或是 Visual Studio 太慢不如 Notepad++ 好使之類的討論比比皆是,我的認爲這些討論沒有意義,由於編輯器和 IDE 根本是面向兩種不一樣使用場景的工具:編輯器
我認爲應當使用正確的工具去作有價值的事情,並把效率最大化,因此我會用 Eclipse 編寫 Java 項目,用 Vim 編寫Shell,用 Sublime Text 編寫 JavaScript/HTML/Python,用 Visual Studio 編寫C#。ide
前言到此結束,下面進入正題。函數
Sublime Text 官方網站 提供了 Sublime Text 各系統各版本的下載,目前Sublime Text 的最新版本是 Sublime Text 3。這裏以 Windows 版本的 Sublime Text 安裝爲例。
注意在安裝時勾選 Add to explorer context menu,這樣在右鍵單擊文件時就能夠直接使用 Sublime Text 打開。
使用 Win + R
運行 sysdm.cpl
打開 「系統屬性」。
而後在 「高級」 選項卡里選擇 「環境變量」,編輯 「Path」,增長 Sublime Text 的安裝目錄(例如 D:\Program Files\Sublime Text 3
)。
接下來你就能夠在命令行裏面利用 subl
命令直接使用 Sublime Text 了:
1
2
3
|
subl file :: 使用 Sublime Text 打開 file 文件
subl folder :: 使用 Sublime Text 打開 folder 文件夾
subl . :: 使用 Sublime Text 當前文件夾
|
前文提到 Sublime Text 支持大量插件,如何找到並管理這些插件就成了一個問題,Package Control 正是爲了解決這個問題而出現的,利用它咱們能夠很方便的瀏覽、安裝和卸載 Sublime Text 中的插件。
進入 Package Control 的 官網,裏面有詳細的 安裝教程。Package Control 支持 Sublime Text 2 和 3,本文只給出 3 的安裝流程:
Ctrl + `
打開 Sublime Text 控制檯。
1
|
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)
|
Ctrl + Shift + P
打開命令板,輸入 PC
應出現 Package Control:成功安裝 Package Control 以後,咱們就能夠方便的安裝使用 Sublime Text 的各類插件:
Sublime Text 是一個收費閉源軟件,這在必定程度上成爲了我支持 Sublime Text 的理由(我心中的軟件靠譜程度:免費開源 << 免費閉源 < 收費開源 < 收費閉源):在 這裏 購買。
不過不購買 Sublime Text 也能夠 「正常」 使用它,只是 Sublime Text 會時不時的彈出一個對話框提醒你購買,此外窗口處會有一個很屌絲很 low 逼的 (UNREGISTERED)。(在高頻操做下,通常 20 分鐘提示一次,我的認爲算是很厚道了)
也許很多人會覺着 Sublime Text 70 刀的價格太貴,但相比它的功能和帶來的效率提高,70 刀真的不值一提,若是你不方便使用 Paypal 付款能夠郵件聯繫我,你支付寶給我打款而後我幫你付款,價格按當日匯率折算(450 元左右)。
Sublime Text 的界面以下:
Ctrl + `
調出,它既是一個標準的 Python REPL,也能夠直接對 Sublime Text 進行配置。與其餘 GUI 環境下的編輯器不一樣,Sublime Text 並無一個專門的配置界面,與之相反,Sublime Text 使用 JSON 配置文件,例如:
1
2
3
4
|
{
"font_size": 12,
"highlight_line": true,
}
|
會將默認字體大小調整爲 12,並高亮當前行。
JSON 配置文件的引入簡化了 Sublime Text 的界面,但也使得配置變的複雜,通常我會到 這裏 查看可用的 Sublime Text 配置。
Sublime Text 的編輯十分人性化——它不像 Vim 那樣反人類(儘管我也用 Vim 但我仍是要說 Vim 的快捷鍵設定絕壁連代謝產物都不如),少許的快捷鍵就能夠完成絕大多數編輯任務。
↑↓←→
就是 ↑↓←→
,不是 KJHL
,(沒錯我就是在吐槽 Vim,尼瑪設成 WSAD
也比這個強啊),粘貼剪切複製均和系統一致。
Ctrl + Enter
在當前行下面新增一行而後跳至該行;Ctrl + Shift + Enter
在當前行上面增長一行並跳至該行。
Ctrl + ←/→
進行逐詞移動,相應的,Ctrl + Shift + ←/→
進行逐詞選擇。
Ctrl + ↑/↓
移動當前顯示區域,Ctrl + Shift + ↑/↓
移動當前行。
Sublime Text 的一大亮點是支持多重選擇——同時選擇多個區域,而後同時進行編輯。
Ctrl + D
選擇當前光標所在的詞並高亮該詞全部出現的位置,再次 Ctrl + D
選擇該詞出現的下一個位置,在多重選詞的過程當中,使用 Ctrl + K
進行跳過,使用 Ctrl + U
進行回退,使用 Esc
退出多重編輯。
多重選詞的一大應用場景就是重命名——從而使得代碼更加整潔。儘管 Sublime Text 沒法像 IDE(例如 Eclipse)那樣進行自動重命名,但咱們能夠經過多重選詞+多重編輯進行直觀且便捷的重命名:
有時咱們須要對一片區域的全部行進行同時編輯,Ctrl + Shift + L
能夠將當前選中區域打散,而後進行同時編輯:
有打散天然就有合併,Ctrl + J
能夠把當前選中區域合併爲一行:
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),這個功能沒有對應的快捷鍵,但能夠經過如下配置項自動開啓。
1
|
"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)),以及在線測試工具(regexpal 和 regexer)。
使用 Ctrl + Shift + F
開啓多文件搜索&替換(注意此快捷鍵和搜狗輸入法的簡繁切換快捷鍵有衝突):
多文件搜索&替換默認在當前打開的文件和文件夾進行搜索/替換,咱們也能夠指定文件/文件夾進行搜索/替換。
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 問題就解決了。
Sublime Text 支持以文件夾作爲單位進行編輯,這在編輯一個文件夾下的代碼時尤爲有用。在 File
下 Open Folder
:
你會發現右邊多了一個側欄,這個側欄列出了當前打開的文件和文件夾的文件,使用 Ctrl + K, Ctrl + B
顯示或隱藏側欄,使用 Ctrl + P
快速跳轉到文件夾裏的文件。
Sublime Text 是一個多窗口多標籤編輯器:咱們既能夠開多個Sublime Text窗口,也能夠在一個Sublime Text窗口內開多個標籤。
使用 Ctrl + Shift + N
建立一個新窗口(該快捷鍵再次和搜狗輸入法快捷鍵衝突,我的建議禁用全部搜狗輸入法快捷鍵)。
當窗口內沒有標籤時,使用 Ctrl + W
關閉該窗口。
使用 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屏。
Sublime Text 有兩種全屏模式:普通全屏和無干擾全屏。
我的強烈建議在開啓全屏前關閉菜單欄(Toggle Menu),不然全屏效果會大打折扣。
F11
切換普通全屏:
Shift + F11
切換無干擾全屏:
風格對於任何軟件都很重要,對編輯器也是如此,尤爲是GUI環境下的編輯器。做爲一個程序員,我但願個人編輯器足夠簡潔且足夠個性。
Notepad++ 默認界面
Sublime Text 默認界面
因此在用過 Sublime Text 以後,我馬上就卸掉了 Notepad++。
Sublime Text 自帶的風格是我喜歡的深色風格(也能夠調成淺色),默認主題是Monokai Bright
,這二者的搭配已經很不錯了,不過咱們還能夠作得更好:接下來我將會展現如何經過設置偏好項和添加自定義風格/主題使得 Sublime Text 更加 Stylish。
下面是我我的使用的設置項。
1
2
3
4
5
6
7
8
9
|
// 設置Sans-serif(無襯線)等寬字體,以便閱讀
"font_face": "YaHei Consolas Hybrid",
"font_size": 12,
// 使光標閃動更加柔和
"caret_style": "phase",
// 高亮當前行
"highlight_line": true,
// 高亮有修改的標籤
"highlight_modified_tabs": true,
|
設置以後的效果以下:
Sublime Text 有大量第三方主題:[https://sublime.wbond.net/browse/labels/theme],這裏我給出幾個我的感受不錯的主題:
colorsublime 包含了大量 Sublime Text 配色方案,並支持在線預覽,配色方案的安裝教程在 這裏,恕不贅述。
我我的使用的是 Nexus 主題和 Flatland Dark 配色,配置以下:
1
2
|
"theme": "Nexus.sublime-theme",
"color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",
|
效果以下:
優秀的編輯器使編碼變的更加容易,因此 Sublime Text 提供了一系列功能以提升開發效率。
良好的代碼應該是規範的,因此Google爲每一門主流語言都設置了其代碼規範(Code Style Guideline)。我本身經過下面的設置使以規範化本身的代碼。
1
2
3
4
5
6
7
8
9
10
11
12
|
// 設置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,
|
Sublime Text 支持代碼段(Code Snippet),輸入代碼段名稱後 Tab
便可生成代碼段。
你能夠經過Package Control安裝第三方代碼段,也能夠本身建立代碼段,參考這裏。
Sublime Text 基本的手動格式化操做包括: Ctrl + [
向左縮進, Ctrl + ]
向右縮進,此外 Ctrl + Shift + V
能夠以當前縮進粘貼代碼(很是實用)。
除了手動格式化,咱們也能夠經過安裝插件實現自動縮進和智能對齊:
Sublime Text 支持必定的自動完成,按 Tab
自動補全。
編寫代碼時會碰到大量的括號,利用 Ctrl + M
能夠快速的在起始括號和結尾括號間切換, Ctrl + Shift + M
則能夠快速選擇括號間的內容,對於縮進型語言(例如Python)則可使用 Ctrl + Shift + J
。
此外,我使用 BracketHighlighter 插件以高亮顯示配對括號以及當前光標所在區域,效果以下:
儘管提供了 Python 控制檯,但 Sublime Text 的控制檯僅支持單行輸入,十分不方便,因此我使用 SublimeREPL 以進行一些編碼實驗(Experiments)。
儘管我試圖在本文包含儘量多的 Sublime Text 實用技能,但受限於篇幅和個人我的經驗,本文仍難免有所遺漏,歡迎在評論裏指出本文的錯誤及遺漏。
下面是一些可能有用但我不多用到的功能:
我把本文出現的Sublime Text按其類型整理在這裏,以便查閱。
↑↓←→
:上下左右移動光標,注意不是否是 KJHL
!Alt
:調出菜單Ctrl + Shift + P
:調出命令板(Command Palette)Ctrl + `
:調出控制檯Ctrl + Enter
:在當前行下面新增一行而後跳至該行Ctrl + Shift + Enter
:在當前行上面增長一行並跳至該行Ctrl + ←/→
:進行逐詞移動Ctrl + Shift + ←/→
進行逐詞選擇Ctrl + ↑/↓
移動當前顯示區域Ctrl + Shift + ↑/↓
移動當前行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)的內容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
:多文件搜索&替換Ctrl + P
:跳轉到指定文件,輸入文件名後能夠:
@
符號跳轉:輸入 @symbol
跳轉到 symbol
符號所在的位置#
關鍵字跳轉:輸入 #keyword
跳轉到 keyword
所在的位置:
行號跳轉:輸入 :12
跳轉到文件的第12行。Ctrl + R
:跳轉到指定符號Ctrl + G
:跳轉到指定行號Ctrl + Shift + N
:建立一個新窗口Ctrl + N
:在當前窗口建立一個新標籤Ctrl + W
:關閉當前標籤,當窗口內沒有標籤時會關閉該窗口Ctrl + Shift + T
:恢復剛剛關閉的標籤F11
:切換普通全屏Shift + F11
:切換無干擾全屏Alt + Shift + 2
:進行左右分屏Alt + Shift + 8
:進行上下分屏Alt + Shift + 5
:進行上下左右分屏Ctrl + 數字鍵
跳轉到指定屏,使用 Ctrl + Shift + 數字鍵
將當前屏移動到指定屏以上。