本文系統全面的介紹了Sublime Text,旨在成爲最優秀的Sublime Text中文教程。html
2014/09/28:java
Ctrl + `
Ctrl + Alt + Enter
Sublime Text是一款跨平臺代碼編輯器(Code Editor),從最初的Sublime Text 1.0,到如今的Sublime Text 3.0,Sublime Text從一個不知名的編輯器演變到如今幾乎是各平臺首選的GUI編輯器。而這樣優秀的編輯器卻沒有一個靠譜的中文教程,因此我試圖經過本文彌補這個缺陷。程序員
從初學編程到如今,我用過的編輯器有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等)以拓展見識。express
因此這篇文章會個人我的工做內容爲主要使用場景(Scenario),儘管沒法覆蓋到全部的使用場景,但我認爲依然能夠覆蓋到絕大部分,若是您認爲我遺漏了什麼內容,請在文章下面回覆,我會盡可能更新。編程
受益於K&R C的寫做風格,我傾向於以實際案例來說解Sublime Text的功能,因此本文中的例子均源於我在實際開發時遇到的問題。json
此外,把本文會使用大量動畫(GIF)演示Sublime Text的編輯功能,由於我發現圖片難以演示完整的編輯流程(Workflow),而視頻又過於重量級。本文的GIF動畫均使用ScreenToGif進行錄製。windows
我常常看到一些程序員拿編輯器和IDE進行比較,諸如Vim比Eclipse強大或是Visual Studio太慢不如Notepad++好使之類的討論比比皆是,我的認爲這些討論沒有意義,由於編輯器和IDE根本是面向兩種不一樣使用場景的工具:sublime-text
我認爲應當使用正確的工具去作有價值的事情,並把效率最大化,因此我會用Eclipse編寫Java項目,用Vim編寫Shell,用Sublime Text編寫JavaScript/HTML/Python,用Visual Studio編寫C#。bash
前言到此結束,下面進入正題。
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了:
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控制檯。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配置文件,例如:
{
"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),這個功能沒有對應的快捷鍵,但能夠經過如下配置項自動開啓。
"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正則表達式教程),以及在線測試工具(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。
下面是我我的使用的設置項。
// 設置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配色,配置以下:
"theme": "Nexus.sublime-theme", "color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",
效果以下:
優秀的編輯器使編碼變的更加容易,因此Sublime Text提供了一系列功能以提升開發效率。
良好的代碼應該是規範的,因此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,
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 + 數字鍵
將當前屏移動到指定屏(http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html)