標籤:
編輯(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替換所有匹配關鍵字。
Regex尋找&替換
Regex是非常強大的文本尋找&替換工具,Sublime Text中使用Alt + R切換正則匹配模式的開啟/關閉。Sublime Text的使用Boost裡的PerlRegex風格。
出於篇幅原因,本文不會對Regex進行詳細介紹,Mastering Regex(中譯本:精通Regex)對Regex的原理和各語言下的使用進行了詳細介紹。此外網上有大量Regex的優秀教程(“Regex30分鐘入門教程”和MSDNRegex教程),以及線上測試載入器(regexpal和regexer)。
多檔案搜尋&替換
使用Ctrl + Shift + F開啟多檔案搜尋&替換(注意此快速鍵和搜狗IME的簡繁切換快速鍵有衝突):
多檔案搜尋&替換預設在當前開啟的檔案和檔案夾進行搜尋/替換,我們也可以指定檔案/檔案夾進行搜尋/替換。
跳轉(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”,這個功能如此好用,以至於我認為沒有其它編輯器能夠超越它。
中文IME的問題
從Sublime Text的初版(1.0)到現在(3.0 3065),中文IME(包括日文IME)都有一個問題:輸入框不跟隨。
目前官方還沒有修複這個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建立一個新視窗(該快速鍵再次和搜狗IME快速鍵衝突,個人建議禁用所有搜狗IME快速鍵)。
當視窗內沒有標籤時,使用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可以以當前縮排粘貼代碼(非常實用)。
除了手動格式化,我們也可以通過安裝外掛程式實現自動縮排和智能對齊:
- 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的控制台僅支援單行輸入,十分不方便,所以我使用Sublime?REPL以進行一些編碼實驗(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)
跳轉(Jumping)
視窗(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://stackoverflow.com/questions/tagged/sublimetext
- http://stackoverflow.com/questions/tagged/sublimetext2
- http://stackoverflow.com/questions/tagged/sublimetext3
- 非官方文檔: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
參考:http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html
Sublime Text 3使用