要變更 VS Code 的鍵盤快捷鍵,請先在 VS Code Keyboard Shortcuts 參考資料中確認目前的預設值,接著在 Windows、Linux 或 macOS 上,透過 VS Code 內建的鍵盤快捷鍵編輯器來編輯這個綁定。VS Code 針對每一個平台,都內建了一套預設按鍵對應,而這正是大多數開發者第一次安裝這個編輯器時所看到的內容。自訂設定是在鍵盤快捷鍵編輯器中進行的,這個編輯器會把每一個綁定,記錄在一個叫做 keybindings.json 的設定檔中。在你變更任何內容之前,你會想先知道這個快捷鍵目前觸發的是哪個指令,以及目前執行它的是哪些按鍵——這一點特別重要,因為 Format Document 在 Windows 上是 Shift+Alt+F,在 Linux 上卻是 Ctrl+Shift+I。一份範圍限定、經過來源查核、涵蓋二十個預設指令的參考資料,能讓你不必捲動幾百列,就完成這樣的查詢。這份參考資料本身不會變更你的綁定;它提供的是準確的按鍵文字與指令名稱,讓你準備好要重新綁定時,可以拿去 VS Code 裡面搜尋,而且它把平台選擇器,變成整個對照關係中不可或缺的一部分。

為什麼在編輯綁定之前,預設值很重要
「變更 VS Code 快捷鍵」這句話,隱藏了許多開發者會跳過的一個步驟:你需要先知道目前的預設值,才能避免衝突,並確認 VS Code 實際要求的準確指令識別碼。綁定檔案並不會儲存像「Format Document」這種好記的名稱;它儲存的是像 editor.action.formatDocument 這樣的指令 ID。如果沒有官方的指令名稱,你的新綁定可能會在不知不覺間,附加到錯誤的動作上,或是當某個擴充功能在不同的 when 條件下註冊了同一個 ID 時,就無法正常套用。預設的按鍵對應也是依平台而異的,因此只涵蓋單一平台的小抄,在你換機器的那一刻,就會主動誤導你。Format Document 在 Windows 上是 Shift+Alt+F,在 Linux 上是 Ctrl+Shift+I,在 macOS 上則是 Shift+Option+F。Toggle Block Comment 在 Windows 上是 Shift+Alt+A,在 Linux 上是 Ctrl+Shift+A,在 macOS 上則是 Shift+Option+A。如果你把 Windows 與 Linux 當成可以互相通用,你發布出去的綁定,可能在你自己的機器上能用,卻在同事的機器上失效。一份把三個平台的對應方式並排列出來的參考資料,能在你打開編輯器之前,就先幫你排除這種靠猜的風險。
在 VS Code Keyboard Shortcuts 參考資料中找出預設快捷鍵
- 在瀏覽器中開啟 VS Code Keyboard Shortcuts 參考資料。
- 從平台選擇器中選擇 Windows、Linux 或 macOS,讓修飾鍵符合你正在設定的機器,並且每次換到不同電腦時,都記得切換選擇器。
- 在搜尋框中輸入內容,可以使用以下三種篩選方式之一:指令名稱(例如「Format document」)、類別(例如「Search」),或按鍵字串(例如「Ctrl+P」或「Cmd+Shift+P」)。
- 閱讀比對到的那一列,記下準確的指令名稱、類別與組合鍵。如果目前所選平台的那一格是空的,代表 VS Code 在該平台上,並沒有為這個指令設定任何預設綁定;你仍然可以自己指定一個。
- 在你切換到 VS Code 時,把這份參考資料留在第二個分頁中開著,這樣你就可以同時並排確認按鍵文字與指令 ID。
在 VS Code 內變更綁定
拿到指令名稱與預設按鍵之後,切換到 VS Code,打開鍵盤快捷鍵編輯器。開啟它的預設按鍵,在 Windows 與 Linux 上是 Ctrl+K Ctrl+S,在 macOS 上則是 Cmd+K Cmd+S,你也可以依序透過 File、Preferences、Keyboard Shortcuts 打開同一個面板。在編輯器裡,把指令名稱輸入到搜尋列中;VS Code 會把清單篩選成符合的預設項目,加上任何自訂綁定,而且每一列都會顯示來源,讓你知道這個綁定是來自預設值、使用者覆寫,還是某個擴充功能。在那一列上按右鍵,選擇 Change Keybinding,然後按下新的按鍵組合。VS Code 支援按鍵序列,因此像 Ctrl+K Ctrl+S 這樣的組合,其實是兩個依序按下的組合鍵,而不是同時按下所有四個按鍵。你也可以點擊編輯器頂端的加號圖示,直接在 keybindings.json 中新增一筆 JSON 項目,如果你想要的綁定需要依賴 fileType 或某個 when 條件,這就是正確的做法。內建的 Developer: Toggle Keyboard Shortcuts Troubleshooting 指令,在你測試的時候很有用:它會顯示 VS Code 實際收到的是哪個按鍵、又派送給了哪個指令,這是找出某個按鍵序列,究竟是被你的視窗管理程式、某個按鍵對應擴充功能,還是作業系統本身攔截的最快方法。
為什麼列出的快捷鍵可能和你安裝的編輯器不一致
這份 20 列的參考資料,描述的是預設值,而不是保證值。VS Code 會依照目前作用中的鍵盤配置來顯示每一個按鍵,因此畫面上顯示的按鍵,假設的是標準的美式鍵盤配置,一旦切換成 AZERTY、Dvorak,或某種在地化的鍵盤配置,你實際要按的按鍵就會改變。使用者自訂的按鍵綁定、按鍵對應擴充功能、Vim 或 Emacs 的按鍵對應、輔助功能工具、其他擴充功能、遠端開發環境,以及與情境相關的 when 條件,都可能覆寫掉某個預設值。Linux 的視窗管理程式,通常會保留 VS Code 平常使用的組合鍵,這也是為什麼某個綁定在參考資料裡看起來正確,實際操作時卻無法觸發的原因之一。像 F1、F2、F12 這樣的功能鍵,也可能在傳到作業系統之前,就先被筆電硬體攔截下來。這些情況,沒有一個會出現在一張靜態的表格裡。當列出的快捷鍵行為不如預期時,確認目前實際綁定的正確地方,是 VS Code 本身內建的鍵盤快捷鍵編輯器;這份參考資料,只能描述在乾淨、預設安裝狀態下為真的內容。
同一個指令在不同平台上的預設值
這份參考資料中的 Windows、Linux 與 macOS 欄位,並不能互相通用,即使修飾鍵看起來很相似也一樣。下表列出幾個容易被忽略差異的指令,而這個差異,就在你從同事的機器上複製綁定過來的那一刻變得很重要。
| 指令 | Windows | Linux | macOS |
|---|---|---|---|
| Format Document | Shift+Alt+F | Ctrl+Shift+I | Shift+Option+F |
| Toggle Block Comment | Shift+Alt+A | Ctrl+Shift+A | Shift+Option+A |
| Toggle Integrated Terminal | Ctrl+` | Ctrl+` | Cmd+` |
| Quick Open File | Ctrl+P | Ctrl+P | Cmd+P |
Format Document 與 Toggle Block Comment,在 Windows 與 Linux 之間的內容並不相同,即使這兩個平台通常都使用 Ctrl 修飾鍵,這正是只涵蓋單一平台的小抄,會製造出來的陷阱。Quick Open 與 Toggle Terminal 在 Windows 與 Linux 上看起來一樣,但在 macOS 上卻會從 Ctrl 變成 Cmd。完整的 VS Code Keyboard Shortcuts 參考資料,把平台選擇器變成整個對照關係中不可或缺的一部分,這樣你讀到的按鍵,就會是你實際使用的那台機器所對應的按鍵。
這份 20 列的參考資料包含了哪些內容,又省略了哪些內容
這份參考資料刻意設限範圍,因此只涵蓋一小組使用頻率高的指令,略過了長尾部分。經過驗證的內容包括:開啟命令選擇區、Quick Open、設定、鍵盤設定、行編輯、註解、搜尋、格式化、符號相關動作、整合式終端機,以及基本的檔案操作。其中八個關鍵對應,是獨立依照 Microsoft 的平台快捷鍵 PDF 文件逐一查核過的,包括 Command Palette、Quick Open、Delete Line、Insert Line Below、Toggle Line Comment、Toggle Block Comment、Format Document 與 Toggle Integrated Terminal。這張表格不包含常見符號動作以外的除錯操作序列、工作綁定、筆記本專屬指令、無障礙專屬的替代方案、Vim 或 Emacs 的按鍵對應,或是在地化鍵盤配置的變體。搜尋功能只會比對固定的瀏覽器內表格,因此這個頁面不會安裝任何擴充功能、不會讀取你的 VS Code 設定、不會監控全域鍵盤輸入、不會變更 keybindings.json,也不會偵測你機器上的衝突。把這 20 列當成完整的按鍵對應,會留下缺口;把它們當成最常用指令的起點,則能節省時間。
當這份參考資料不夠用時,該去哪裡查
對於這 20 個涵蓋指令以外的任何內容,VS Code 內建的鍵盤快捷鍵編輯器,才是最終的真相來源。它會顯示每一個預設綁定,加上你自己的覆寫設定,讓你可以依來源篩選,並且揭露出限制每一個綁定生效條件的 when 條件。Microsoft 完整的平台小抄,列出了其餘的預設值,而 keybindings documentation 則說明了在你編輯 keybindings.json 時,按鍵序列、情境條件與規則作用範圍,彼此是如何組合運作的。把這份 20 列的參考資料,當成你每天會用到的指令的快速查詢工具,需要長尾內容時,再回頭查閱這些資源。
如果你正在權衡選項,How Do Keyboard Shortcuts Work in Word: A Developer View 這篇文章有詳細說明。
如果你正在權衡選項,Format HTML Code from Notepad++ Without Plugins 這篇文章有詳細說明。