今天是鐵人賽的第四天,今天是我們最後一天專門學習跟VSCode有關的基礎觀念。或許有讀者想快速進入實戰,但請相信筆者,今天了解的觀念,絕對會對我們開發extension大有幫助。
在VSCode裡,一切操作都跟Command有關,當我們點擊了extension在explorer的TreeView觸發行為,我們執行了Command。當我們使用了快捷鍵開啟panel,我們也執行了Command。
在VSCode裡面,除了程式、手動觸發,在VSCode提供給一般使用者觸發command的情境,主要由下面兩者觸發:
Command Palette:透過在command palette裡執行選取task的task觸發命令。
KeyBindings: 當我們點擊快捷鍵,即會觸發Command命令,快捷鍵可以在工作區使用keybindings.json
自訂。
來自第三方extension的command或者是VSCode editor內建的command,都可以被使用者訪問到,甚至也可以被我們要開發的新的extension訪問、執行。
那麼,我們有什麼方法了解有哪些內建Command可以使用呢?
當我們打算檢視所有已被註冊在VSCode的Command,不管是內建的,還是第三方的extesnion,透過Keyboard Shortcut頁面即可一覽無遺。
Keyboard Shortcut和之前settings頁面同一階層,因此,在mac裡,我們即可順著Code > Preferences > Keyboard Shortcuts
路徑依次選取選項開啟頁面。另外,我們也可以在Command Palette裡使用昨天提到的Preference
系列選項中的Preference: Open Keyboard Shortcuts
開啟它。
Windows或linux的使用者請依次選取 File > Preferences > Keyboard Shortcuts 打開設定。
在Keyboard Shortcut的table裡,可以看到當前command對應kindbinding的快捷鍵,以及觸發時的條件when。
讓我們在把keyborad shortcut往下滾動,直到沒有對應keybinding的command...
我們可以看到第三方套件的.NET command,即使沒有對應的keybindings跟when條件,只要是跟VSCode註冊過Command的,一律被列在表中。這對我們來講真的是一個好消息,我們可以在同一個Keyboard Shortcuts表中,方便的檢視所有command,並且透過搜尋條快速查找。
同時,我們還可以在Keyboard Shortcuts表中直接手動設置第三方套件的快捷鍵喔!
在VSCode裡面,keyboard shortcut屬於全域,我們也跟settings.json一樣點擊右上角Open Keyboard Shortcuts
icon 切換到json模式檢查所有新加的keybindings.json。
同樣的,我們可以跟昨天一樣在.vscode資料夾下面新增keybindings.json設定workspace scope的快捷設定覆蓋user level的設定。
keybings.json的設定範例如下:
[
{
"key": "f5",
"command": "workbench.action.debug.start",
"when": "!inDebugMode"
},
...
]
當我們要設置keybindings,即可在設定檔中添加一個rule物件,物件包含我們看到的三個屬性,分別是:
Tips: 在VSCode的keybings文件裡,條列了VSCode各種狀態的context的列表,可以讓我們在command的when語句裡判斷。日後設計extension command時記得還有這些context狀態可以使用喔!
好啦,今天的command介紹就到這裡了,相信大家應該對command命令有一定的認識了。明天我們將開始第一個extension,並直接練習註冊extension的command範例。
我們明天見,掰掰!