最近,當我主要使用Python開發環境編輯的時候,我開始越來越多地用到Sublinme Text 2.這篇文章主要說明了能讓Python的程式設計師使用更方便的一些設定和調整。
為何選擇Sublime Text?
我以前一直是TextMate的忠實用戶。這是一個輕量級的、開源的軟體,作為OS X的本地應用,具有很好的Mac風格。不過,雖然TextMate是個很棒的編輯器,有時候還是顯得功能不夠。
我用過一些功能較強的軟體,例如 加上Python插件的IntelliJ IDEA。 我特別喜歡它的debugger和test runner。不過,像IntelliJ這樣的全功能的IDE對於中小專案來說還是顯得過於龐大。
最近幾週我開始越來越多的使用 Sublime Text。當我將它安裝好之後,感覺非常好。它確實非常快,自動定期的更新,以及更棒的是完全支援跨平台。對我來說,它最終勝過TextMate的地方是Sublime強大的插件子系統。對於Python開發,有不少外掛可以讓你開發起來更流暢、更有樂趣。
我現在仍然在不同的項目之間切換編輯器。不過我發現對應Python開發,Sublime在輕量級的編輯器和全功能的IDE之間有著很好的平衡。
字體的選擇
Ubuntu Mono 是非常非常好的字體。前幾天我剛從 Menlo 切換過來,這絕對不讓人後悔。
在我的15吋的MacBook上,Ubuntu Mono的16號字非常適合。 1680 × 1050的解析度對於一個側邊欄加兩個編輯器視窗(自動調整到80個字元寬)剛好適合。
如果你打算認真的挑選一下字體, slant.co的這篇文章 寫的不錯。它包含了大部分流行的程式設計方面的字體的截圖及下載連結。
安裝插件
如同先前所提到的, Sublime 有一個非常豐富的插件系統。而我目前使用的插件如下:
Package Control 在 Sublime 裡直接安裝附加插件的套件管理器。這是唯一一個你必須手動安裝的插件。這邊列出的其他所有插件都可以透過 Package Control 來安裝。也可以透過它來更新已安裝的插件。簡單得想做是 Sublime packages 的 apt-get 就行了。
Color Scheme - Tomorrow Night Color schemes 決定了編輯器介面語法高亮的字體顏色。這是一個非常酷的暗黑系樣式。
Theme - Soda Dark Themes 影響 Sublime 介面元素的色彩和風格。這款非常適合 Tomorrow Night 的配色方案。
SideBarEnhancements 這個外掛程式提供了側邊欄附加的上下文功能表選項,例如"New file","New Floder"等。這些本應默認就該有的,卻沒有。
All Autocomplete Sublime 預設的自動完成只專注於目前檔案的單字。這個插件擴展了其自動完成的單字列表到所有打開的檔案。
SublimeCodeIntel 為部分語言增強自動完成功能,包括了 Python 。這個外掛同時也可以讓你跳到符號定義的地方,按住 alt 並點擊符號。非常方便。
SublimeREPL 允許你在編輯介面直接執行 Python 解譯器。我傾向於在單獨的終端視窗使用bpython 來運行,但有時 SublimeREPL 是很有幫助的。
GitGutter 在編輯器的凹槽區,依照 Git ,增加小圖示以識別一行是否已插入、修改或刪除。在 GitGutter 的 readme 中有說明如何更改顏色圖示來更新你的配色方案檔案。
Pylinter 這個外掛程式提供了目前我所見到的最好的 pylint 編輯器整合。它會自動檢查 .py 文件,無論何時被儲存,並且會直接在編輯介面顯示 pylint 違規。它還有一個快捷方式來停用局部的 pylint 檢查,透過插入一個 #pylint: 來停用註解。這個插件對於我確實非常有用。
設定檔
Sublime Text 的一個優點就是它的所有設定都是簡單的基於 JSON 的設定檔。這使得你可以很容易的將配置轉到另一個系統。我也看過一些人使用 Dropbox 自動同步他們所有電腦上的設定。
Preferences.sublime-settings 配置了 Sublimede 的顯示和行為。你可以在sublime 中透過 Preferences > Settings — User 開啟並編輯此檔案。我使用以下配置:
{ // Colors "color_scheme": "Packages/Tomorrow Color Schemes/Tomorrow-Night.tmTheme", "theme": "Soda Dark.sublime-theme", // Font "font_face": "Ubuntu Mono", "font_size": 16.0, "font_options": ["subpixel_antialias", "no_bold"], "line_padding_bottom": 0, "line_padding_top": 0, // Cursor style - no blinking and slightly wider than default "caret_style": "solid", "wide_caret": true, // Editor view look-and-feel "draw_white_space": "all", "fold_buttons": false, "highlight_line": true, "auto_complete": false, "show_minimap": false, // Editor behavior "scroll_past_end": false, "highlight_modified_tabs": true, "find_selected_text": true, // Word wrapping - follow PEP 8 recommendations "rulers": [ 72, 79 ], "word_wrap": true, "wrap_width": 80, // Whitespace - no tabs, trimming, end files with \n "tab_size": 4, "translate_tabs_to_spaces": true, "trim_trailing_white_space_on_save": true, "ensure_newline_at_eof_on_save": true, // Sidebar - exclude distracting files and folders "file_exclude_patterns": [ ".DS_Store", "*.pid", "*.pyc" ], "folder_exclude_patterns": [ ".git", "__pycache__", "env", "env3" ] }
Pylinter.sublime-settings配置了pylinter 插件。我使用下面的配置讓 Pyhton 在儲存時自動規範,並對違反規範顯示圖示。
{ // Configure pylint's behavior "pylint_rc": "/Users/daniel/dev/pylintrc", // Show different icons for errors, warnings, etc. "use_icons": true, // Automatically run Pylinter when saving a Python document "run_on_save": true, // Don't hide pylint messages when moving the cursor "message_stay": true }
按鍵綁定
Sublime 的按鍵綁定也是全部可設定的基於JSON的 sublime-keymap 設定檔。我修改了一些預設配置以更好的配合我的 TextMate / IntelliJ 肌肉記憶。你可以完全不修改。如果你想,修改很簡單,可以跨平台使用。我使用如下的綁定:
[ // Rebind "go to file" to cmd+shift+O { "keys": ["super+shift+o"], "command": "show_overlay", "args": { "overlay": "goto", "show_files": true }}, // Rebind swap line up/down to cmd+shift+up/down { "keys": ["super+shift+up"], "command": "swap_line_up" }, { "keys": ["super+shift+down"], "command": "swap_line_down" }, // Delete a line with cmd+delete { "keys": ["super+backspace"], "command": "run_macro_file", "args": { "file": "Packages/Default/Delete Line.sublime-macro" }}, // Reindent selection with cmd+alt+L { "keys": ["super+alt+l"], "command": "reindent"} ]
命令列工具
同 TextMate 的 mate 類似,Sublime Text 包含了一個命令列工具,允許你透過 shell 開啟編輯器。工具名為 sublis,預設不可用。要使其生效,請在任何shell 中運行下面:
ln -s /Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl
要將Sublime 作為 互動命令的預設編輯器使用——舉例,撰寫提交資訊——只需添加下面一行到你的~/.profile 檔案:
export GIT_EDITOR="subl --wait --new-window"