一、基礎
1.重要文檔:
sublime Text3官方文檔中文版:http://feliving.github.io/Sublime-Text-3-Documentation/
sublime Text插件下載網站:https://sublime.wbond.net/
Sublime Text install package control:https://sublime.wbond.net/installation
很好的參考文檔:https://github.com/jikeytang/sublime-text
2.安裝Package Control:
輸入ctrl+`或者view->show console:輸入
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)
即可安裝。如不清楚,參考:https://sublime.wbond.net/installation
3.插件推薦:
Soda主題:https://github.com/buymeasoda/soda-theme/
Alignment
AutoFileName .自動補全文件(目錄)名
BracketHighlighter突出顯示括號/引號
ColorHighlighter 背景顯示16進制顏色
DocBlockr 生成註釋模板
Emmet (ex-Zen Coding) 用過Zen-Coding的都知道, 把你節省的時間用於享受生活
SideBarEnhancements不支持ST3
Sublime CodeIntel – 智能代碼提示
MarkdownPreviewer – Markdown 實時預覽插件
FreeMarker:Freemarker模板語言輔助
SublimeCodeIntel 代碼提示,支持css,js,html,php,python,perl等插件主頁:https://github.com/Kronuz/SublimeCodeIntel
JSHint、JsFormart、jQuery、jQuery Snippets pack
Autoprefixer、Color Highlighter、ConvertToUTF8
SFTP、git、svn
YUI Compressor js代碼壓縮
Maven
Tag、ctags
LESS, lessCSS代碼提示 、scss
Indent XML-json/xml轉換
sublimeLinter
HTML5
pretty json、json
Terminal、SublimeTmpl
各種snippets
3.相關技巧和問題解決
1.將sublime切換到vim模式
在preferences->settings default:裏面有這樣一段,意思就是忽略vim模式
{
"ignored_packages":
[
"Vintage"
],
}
所以我們應該再preferences->settings user裏面添加:
{
"ignored_packages":[],
}
2.關於Sublime Text3光標變粗的解決:
在preferences->settings user裏面添加:
"caret_extra_top": 0,
"caret_extra_bottom": 0,
"caret_extra_width": 1
解決方案參考的是:http://my.oschina.net/f839903061/blog/198142
3.soda theme主題的安裝:
進入項目地址看其教程。
4.eclipse快捷鍵覆蓋sublime快捷鍵。
對:Default (Windows).sublime-keymap這個文件進行更改,改爲:
國人版
[ /** * 常用快捷鍵(Sublime默認) * -------------- * * 光標一個單詞一個單詞的移動 * { "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} }, * 按住shift來選文字時, 一個個單詞的選而不是一個個字母 * { "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} }, * * 類似光標一個個單詞的移動 * { "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} }, * { "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} }, * * 縮進 * { "keys": ["ctrl+]"], "command": "indent" }, * { "keys": ["ctrl+["], "command": "unindent" }, * * 刪除整個單詞 * { "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false } }, * { "keys": ["ctrl+delete"], "command": "delete_word", "args": { "forward": true } }, * * 行排序(例如選中幾個JSON字段, 讓這些字段名按字母順序排序) * { "keys": ["f9"], "command": "sort_lines", "args": {"case_sensitive": false} }, * * 參考 * ---------------------- * Using Sublime Text as your IDE * http://www.chromium.org/developers/sublime-text * * Web Development With Sublime Text 2 * http://www.paulund.co.uk/web-development-with-sublime-text-2 */ // editor配置 { "keys": ["ctrl+v"], "command": "paste_and_indent" }, { "keys": ["ctrl+shift+v"], "command": "paste" }, /** * 適配eclipse快捷鍵 * * 下面這位仁兄早就有了這個想法 * Eclipse shortcuts for Sublime Text 2 * http://icoloma.blogspot.com/2011/10/eclipse-shortcuts-for-sublime-text-2.html */ { "keys": ["alt+/"], "command": "auto_complete" }, { "keys": ["ctrl+i"], "command": "reindent" }, // 當前行和下面一行交互位置 { "keys": ["alt+up"], "command": "swap_line_up" }, { "keys": ["alt+down"], "command": "swap_line_down" }, // 複製當前行到上一行 { "keys": ["ctrl+alt+up"], "command": "duplicate_line" }, // 複製當前行到下一行 { "keys": ["ctrl+alt+down"], "command": "duplicate_line" }, // 刪除整行 { "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} }, // 光標移動到指定行 { "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} }, // 快速定位到選中的文字 { "keys": ["ctrl+k"], "command": "find_under_expand_skip" }, // { "keys": ["ctrl+shift+x"], "command": "swap_case" }, { "keys": ["ctrl+shift+x"], "command": "upper_case" }, { "keys": ["ctrl+shift+y"], "command": "lower_case" }, // 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置, 不一定是最後) { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "Packages/Default/Add Line.sublime-macro"} }, // 定位到對於的匹配符(譬如{})(從前面定位後面時,光標要在匹配符裏面,後面到前面,則反之) { "keys": ["ctrl+shift+p"], "command": "move_to", "args": {"to": "brackets"} }, // 這個命令默認使用的是ctrl+shift+p { "keys": ["ctrl+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} }, // outline { "keys": ["ctrl+o"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} }, // 當前文件中的關鍵字(方便快速查找內容) { "keys": ["ctrl+alt+o"], "command": "show_overlay", "args": {"overlay": "goto", "text": "#"} }, // open resource { "keys": ["ctrl+shift+r"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} }, // 文件內查找/替換 { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace"} }, // 全局查找/替換, 在查詢結果中雙擊跳轉到匹配位置 {"keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "find_in_files"} }, // plugin配置 { "keys": ["alt+a"], "command": "alignment" }, {"keys": ["ctrl+shift+f"], "command": "js_format"} ]
國外版:
[ { "keys": ["f12"], "command": "htmlprettify"}, { "keys": ["f1"], "command": "fold" }, { "keys": ["f2"], "command": "unfold" }, { "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} }, { "keys": ["ctrl+space"], "command": "auto_complete" }, { "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context": [ { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" }, { "key": "auto_complete_visible", "operator": "equal", "operand": false }, { "key": "setting.tab_completion", "operator": "equal", "operand": true } ] }, { "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} }, { "keys": ["ctrl+shift+c"], "command": "toggle_comment", "args": { "block": false } }, { "keys": ["ctrl+shift+c"], "command": "toggle_comment", "args": { "block": true } }, { "keys": ["ctrl+shift+f"], "command": "reindent" , "args": {"single_line": false}}, { "keys": ["alt+up"], "command": "swap_line_up" }, { "keys": ["alt+down"], "command": "swap_line_down" }, { "keys": ["ctrl+alt+j"], "command": "join_lines" }, { "keys": ["ctrl+alt+down"], "command": "duplicate_line" }, { "keys": ["shift+ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} }, { "keys": ["ctrl+shift+s"], "command": "save_all" }, { "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} }, { "keys": ["shift+ctrl+f4"], "command": "close_all" }, { "keys": ["shift+ctrl+y"], "command": "lower_case" }, { "keys": ["shift+ctrl+x"], "command": "upper_case" } ]
此處 參考:https://gist.github.com/ufologist/5590481#file-default-windows-sublime-keymap
https://gist.github.com/thbkrkr/3194275
4.快捷鍵:
1。默認快捷鍵:
1. Ctrl+L 選擇整行(按住-繼續選擇下行)
2. Ctrl+Shift+K(shhift+del) 刪除整行, ctrl + KK 從光標處刪之行尾,Ctrl+K Backspace 從光標處刪除至行首
3. Ctrl+Shift+D 複製光標所在整行,插入在該行之前
4. Ctrl+D 選詞 (按住-繼續選擇下個相同的字符串,再按,可跳到相應的方法定義處
5. Ctrl+Shift+M 選擇括號內的內容(按住-繼續選擇父括號)
6. Ctrl+/ 註釋整行(如已選擇內容,同“Ctrl+Shift+/”效果)
7. Ctrl + alt + / 取消註釋
8. Ctrl+Shift+UP 與上行互換 ctrl + shift + up: 列模式編輯
9. Ctrl + R 跳轉當前頁的目標方法
10. Ctrl+K + U 大寫
11. Ctrl+K + L 小寫
12. 鼠標中間 列模式編輯
13. Ctrl+Shift+[] 代碼摺疊
14. ctrl+k ctrl+1: 摺疊所有代碼
15. Ctrl + K,B 打開側邊欄
16. ctrl + 回車: 光標後插入行, Ctrl+Shift+Enter 光標前插入行
17. ctrl + m: 匹配括號
18. vim mode下 查找上一個下一個的快捷鍵是 是* #
19. ctrl +z, y: 撤銷,恢復撤銷
20. alt + .: 閉合當前標籤
21. Ctrl+F2: 設置書籤
22. F2: 下一個書籤
23. Shift+F2: 上一個書籤
24. ctrl + p: 即時的文件切換
25. ctrl + shift + a: 選擇標籤內的內容
26. ctrl + 單擊: 多行隨意位置添加光標
27. alt + F3( mac: ctrl + command + g): 選擇頁面中所有相同的詞
28. ctrl + F3: 跳轉到下一個選中的詞
29. Ctrl+Shift+P Set Syntax:html : 設置文件類型
30. Shift + 右鍵: 連續多行光標選中 (by Gary Gauh)
2.Emmet快捷鍵:
1. match_pair_outward: ctrl+,向外匹配 2. match_pair_inward: ctrl+alt+,向內匹配 3. matching_pair: ctrl+alt+j,快速匹配html標籤(phpstorm: ctrl + []) 4. split_join_tag: shift+ctrl+`,快速成對修改html標籤 5. remove_tag: shift+ctrl+;刪除包裹的html標籤(phpstorm: ctrl + shift + del) 6. increment_number_by_1: ctrl+up,數字快速增長,步長爲1 7. decrement_number_by_1: ctrl+down,數字快速遞減,步長爲1 8. increment_number_by_01: alt+up,數字快速增長,步長爲0.1 9. decrement_number_by_01: alt+down,數字快速遞減,步長爲0.1 10. increment_number_by_10:shift+alt+up,數字快速增長,步長爲10 11. decrement_number_by_10: shift+alt+down,數字快速遞減,步長爲10 12. select_next_item:shift+ctrl+. 選擇下一個屬性 13. select_previous_item: shift+ctrl+,, 選擇上一個屬性 14. wrap_as_you_type: shift+ctrl+g,包裹內容
3.VIM模式快捷鍵:
一. 移動: h,j,k,l: 左,下,上,右。 w: 下一個詞的詞首。W:下一個單詞(不含標點)。 e:下一個詞的詞尾。E:不含標點。 b:上一個詞的詞首。B:不含標點。 <>: v 模式選中後進行縮進。 >><<:向前向後縮進。 二. 跳轉: %: 可以匹配{},"",(),[]之間跳轉。 H、M、L:直接跳轉到當前屏幕的頂部、中部、底部。 #H:跳轉到當前屏的第#行。 #L:跳轉到當前屏的倒數第#行。 zt: 當前編輯行置爲屏頂。 zz: 當前編輯行置爲屏中。 zb: 當前編輯行置爲屏底。 G:直接跳轉到文件的底部。 gg: 跳轉到文件首。 gd: 跳轉到光標所在函數和變量的定義。 ():跳轉到當前的行首、行尾。 {}:向上、向下跳轉到最近的空行。 [{:跳轉到目前區塊開頭。 ]}:跳轉到目前區塊結尾。 0: 跳轉到行首。 $: 跳轉到行尾。 2$: 跳轉到下一行的行尾。 #:跳轉到該行的第#個位置。 #G: 15G,跳轉到15行。 :#:跳轉到#行。 f'n':跳轉到下一個"n"字母后。 ctrl+b: 向後翻一頁。 ctrl+f:向前翻一頁。 ctrl+u: 向後翻半頁。 ctrl+d: 向前翻半頁。 ctry+e: 下滾一行。 三. 選擇: 1.v: 開啓可視模式。 V: 開啓逐行可視模式。 2.^V: 矩形選擇。 3.v3w: 選擇三個字符。 4.ab:包括括號和()內的區域。 5.aB:包括括號和{}內的區域。 6.ib:括號()內的區域。 7.iB:括號{}內的區域。 8.aw:標記一個單詞。 四. 編輯: 1. 新增: i: 光標前插入。 I: 在當前行首插入。 a: 光標後插入。 A: 當前行尾插入。 O: 在當前行之前插入新行。 o: 在當前行之後插入新行。 2. 修改 c(change) 爲主: r: 替換光標所在處的字符。 R:替換光標所到之處的字符。 cw: 更改光標所在處的字到字尾處。 c#w: c3w 修改3個字符。 C:修改到行尾。 ci':修改配對標點符號中的文本內容。 di':刪除配對標點符號中的文本內容。 yi':複製配對標點符號中的文本內容。 vi':選中配對標點符號中的文本內容。 s:替換當前一個光標所處字符。 #S:刪除 # 行,並以新文本代替。 3. 刪除 d(delete) 爲主: D:刪除到行尾。 X: 每按一次,刪除光標所在位置的前面一個字符。 x: 每按一次,刪除光標所在位置的後面一個字符。 #x: 刪除光標所在位置後面6個字符。 d^: 刪至行首。 d$: 刪至行尾。 dd:(剪切)刪除光標所在行。 dw: 刪除一個單詞/光標之後的單詞剩餘部分。 d4w: 刪除4個word。 #dd: 從光標所在行開始刪除#行。 daB: 刪除{}及其內的內容。 diB: 刪除{}中的內容。 n1,n2 d:將n1,n2行之間的內容刪除。 4. 查找: /: 輸入關鍵字,發現不是要找的,直接在按n,向後查找直到找到爲止。 ?: 輸入關鍵字,發現不是要找的,直接在按n,向前查找直到找到爲止。 *: 在當前頁向後查找同一字。 #: 在當前頁向前查找同一字。 5. 複製 y(yank)爲主: yw: 將光標所在之處到字尾的字符複製到緩衝區中。 #yw: 複製#個字到緩衝區。 Y:相當於yy, 複製整行。 #yy:表示複製從光標所在的該行往下數#行文字。 p: 粘貼。所有與y相關的操作必用p來結合粘貼。 ]p:粘貼到合適的縮進處。 n1,n2 co n3:複製第n1行到第n2行之間的內容到第n3行後面。 6. 大小寫轉換: gUU: 將當前行的字母改爲大寫。 guu: 將當前行的字母改爲小寫。 gUw: 將當前光標下的單詞改爲大寫。 guw: 將當前光標下的單詞改爲小寫。 a. 整篇大寫: ggguG gg: 光標到文件第一個字符。 gu: 把選擇範圍全部小寫。 G: 到文件結束。 b. 整篇小寫:gggUG 7. 其它: J:當前行和下一行合併成一行。 8. 移動: n1,n2 m n3:將n1行到n2行之間的內容移至n3行下。 五.退出: 1. w filename: 保存正在編輯的文件filename 2. wq filename: 保存後退出正在編輯的文件filename 3. q:退出不保存。 六.窗口操作: 1. ctrl+w p: 在兩個分割窗口之間來回切換。 2. ctrl+w j: 跳到下面的分割窗 3. ctrl+w h: 跳到左邊的分割窗。 4. ctrl+w k: 跳到上面的分割窗。 5. ctrl+w l: 跳到右邊的分割窗。 七.摺疊: zo 將遊標所在處的折疊打開。open。 zc 將遊標所在處已打開的內容再度折疊起來。close。 zr 將全文的所有折疊依層次通通打開。reduce。 zm 將全文已打開的折疊依層次通通再折疊起來。more。 zR 作用和 zr 同,但會打開含巢狀折疊(折疊中又還有折疊)的所有折疊。 zM 作用和 zm 同,但對於巢狀折疊亦有作用。 zi 這是個切換,是折疊與不折疊指令間的切換。 zn 打開全文的所有折疊。fold none。 zN 這是 zn 的相對指令,回復所有的折疊。
此處參考:https://github.com/jikeytang/sublime-text
六、基礎配置實例:
Package Control.sublime-settings文件:
{ "auto_upgrade_last_run": null, "installed_packages": [ "Alignment", "AutoFileName", "BracketHighlighter", "Color Highlighter", "DocBlockr", "EditorConfig", "Emmet", "jQuery", "JsFormat", "JSLint", "MarkdownEditing", "Package Control", "PlainTasks", "SideBarEnhancements", "SmartMarkdown", "SublimeBlockCursor", "SublimeCodeIntel", "Tag", "Theme - Soda", "ToggleQuotes" ] }
Preferences.sublime-settings文件:
{ "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme", "font_face": "Monaco", "font_size": 12.0, "highlight_line": true, "highlight_modified_tabs": true, "ignored_packages": [ "JSLint" ], "rulers": [ 80 ], "theme": "Soda Dark.sublime-theme", "translate_tabs_to_spaces": true, "word_wrap": true }
五、我的Sublime配置舉例:
進入Preferences-settings-User
我的配置如下:
{
"ignored_packages":
[
"Vintage"
],
"theme" : "Soda Dark.sublime-theme",
// 是否顯示行號
"line_numbers": true,
// 是否顯示行號邊欄
"gutter": true,
// 行號邊欄和文字的間距
"margin": 4,
// 是否顯示代碼摺疊按鈕
"fold_buttons": true,
// 不管鼠標在不在行號邊欄,代碼摺疊按鈕一直顯示
"fade_fold_buttons": true,
// 是否打開拼寫檢查
"spell_check": false,
// Tab鍵製表符寬度
"tab_size": 4,
// 按回車時,自動與製表位對齊
"auto_indent": true,
"font_size": 11,
"highlight_line": true,
"match_tags": true,
// 默認編碼格式
"default_encoding": "UTF-8",
}
快捷鍵鍵總結
選擇類 Ctrl+D 選中光標所佔的文本,繼續操作則會選中下一個相同的文本。 Alt+F3 選中文本按下快捷鍵,即可一次性選擇全部的相同文本進行同時編輯。舉個栗子:快速選中並更改所有相同的變量名、函數名等。 Ctrl+L 選中整行,繼續操作則繼續選擇下一行,效果和 Shift+↓ 效果一樣。 Ctrl+Shift+L 先選中多行,再按下快捷鍵,會在每行行尾插入光標,即可同時編輯這些行。 Ctrl+Shift+M 選擇括號內的內容(繼續選擇父括號)。舉個栗子:快速選中刪除函數中的代碼,重寫函數體代碼或重寫括號內裏的內容。 Ctrl+M 光標移動至括號內結束或開始的位置。 Ctrl+Enter 在下一行插入新行。舉個栗子:即使光標不在行尾,也能快速向下插入一行。 Ctrl+Shift+Enter 在上一行插入新行。舉個栗子:即使光標不在行首,也能快速向上插入一行。 Ctrl+Shift+[ 選中代碼,按下快捷鍵,摺疊代碼。Ctrl+Shift+] 選中代碼,按下快捷鍵,展開代碼。 Ctrl+K+0 展開所有摺疊代碼。 Ctrl+← 向左單位性地移動光標,快速移動光標。Ctrl+→ 向右單位性地移動光標,快速移動光標。 shift+↑ 向上選中多行。shift+↓ 向下選中多行。Shift+← 向左選中文本。Shift+→ 向右選中文本。 Ctrl+Shift+← 向左單位性地選中文本。Ctrl+Shift+→ 向右單位性地選中文本。 Ctrl+Shift+↑ 將光標所在行和上一行代碼互換(將光標所在行插入到上一行之前)。 Ctrl+Shift+↓ 將光標所在行和下一行代碼互換(將光標所在行插入到下一行之後)。 Ctrl+Alt+↑ 向上添加多行光標,可同時編輯多行。Ctrl+Alt+↓ 向下添加多行光標,可同時編輯多行。 編輯類 Ctrl+J 合併選中的多行代碼爲一行。舉個栗子:將多行格式的CSS屬性合併爲一行。 Ctrl+Shift+D 複製光標所在整行,插入到下一行。 Tab 向右縮進。Shift+Tab 向左縮進。 Ctrl+K+K 從光標處開始刪除代碼至行尾。Ctrl+Shift+K 刪除整行。 Ctrl+/ 註釋單行。Ctrl+Shift+/ 註釋多行。 Ctrl+K+U 轉換大寫。Ctrl+K+L 轉換小寫。 Ctrl+Z 撤銷。Ctrl+Y 恢復撤銷。Ctrl+U 軟撤銷,感覺和 Gtrl+Z 一樣。 Ctrl+F2 設置書籤Ctrl+T 左右字母互換。F6 單詞檢測拼寫 Ctrl+鼠標左鍵 可以同時選擇要編輯的多處文本 搜索類 Ctrl+F 打開底部搜索框,查找關鍵字。 Ctrl+shift+F 在文件夾內查找,與普通編輯器不同的地方是sublime允許添加多個文件夾進行查找,略高端,未研究。 Ctrl+P 打開搜索框。舉個栗子:1、輸入當前項目中的文件名,快速搜索文件,2、輸入@和關鍵字,查找文件中函數名,3、輸入:和數字,跳轉到文件中該行代碼,4、輸入#和關鍵字,查找變量名。 Ctrl+G 打開搜索框,自動帶:,輸入數字跳轉到該行代碼。舉個栗子:在頁面代碼比較長的文件中快速定位。 Ctrl+R 打開搜索框,自動帶@,輸入關鍵字,查找文件中的函數名。舉個栗子:在函數較多的頁面快速查找某個函數。 Ctrl+: 打開搜索框,自動帶#,輸入關鍵字,查找文件中的變量名、屬性名等。 Ctrl+Shift+P 打開命令框。場景栗子:打開命名框,輸入關鍵字,調用sublime text或插件的功能,例如使用package安裝插件。 Esc 退出光標多行選擇,退出搜索框,命令框等。 顯示類 Ctrl+Tab 按文件瀏覽過的順序,切換當前窗口的標籤頁。 Ctrl+PageDown 向左切換當前窗口的標籤頁。Ctrl+PageUp 向右切換當前窗口的標籤頁。 Alt+Shift+1 窗口分屏,恢復默認1屏(非小鍵盤的數字) Alt+Shift+2 左右分屏-2列Alt+Shift+3 左右分屏-3列Alt+Shift+4 左右分屏-4列Alt+Shift+5 等分4屏 Alt+Shift+8 垂直分屏-2 Alt+Shift+9 垂直分屏-3屏 Ctrl+K+B 開啓/關閉側邊欄。 F11 全屏模式 Shift+F11 免打擾模式
其他參考資料:http://wiki.junnan.org/pages/software/editor_ide.html
http://www.douban.com/note/276794943/