VS Code 出貨時隨附一組預設的鍵盤快捷鍵,但這些預設值在不同作業系統之間並不完全相同。同一個指令在 Windows 上可能使用 Ctrl,在 macOS 上使用 Cmd,在 Linux 上則使用完全不同的組合,這就是為什麼從 Windows 教學複製來的快捷鍵在 Linux 機器上會感覺失效,即使你的安裝環境沒有任何變動。一份經過嚴格審核且來源可查的參考資料,例如 VS Code 鍵盤快捷鍵查詢,會並列列出 20 個常用指令在三種平台上的官方預設值,讓你在開始變更任何設定之前,能先稽核每個綁定應該是什麼。這份參考資料的範圍是有意限定的——它涵蓋導覽、編輯、搜尋、程式碼、終端機和檔案指令——而且它不會讀取你的編輯器設定、不會安裝任何東西,也不會監控按鍵。它提供給你的,是每個指令單一可稽核的一列,並明確標示從 Microsoft 當前平台 PDF 所取得的 Windows、Linux 和 macOS 對應綁定,因此當某個快捷鍵與你的預期不同時,你可以追溯到真實的平台差異,而不是你忘了曾做過的自訂。

how to reset vs code keyboard shortcuts
VS Code 鍵盤快捷鍵:依平台比較的預設值

為什麼 VS Code 的預設值會因平台而異

VS Code 從各個宿主作業系統繼承了一些慣例。在 Windows 和大多數 Linux 桌面環境中,主要動作的修飾鍵是 Ctrl;在 macOS 上則是 Cmd,並以 Option 代替 Alt。編輯器還會對齊一些與平台慣例相符的組合,而這些慣例無法直接移植,這就是為什麼同一個指令在三種不同環境下執行會有三種不同的預設值。兩個常見的編輯指令最能凸顯這個差距。在 Windows 上,Format Document 綁定為 Shift+Alt+F,Toggle Block Comment 綁定為 Shift+Alt+A。在 Linux 上,官方參考使用 Ctrl+Shift+I 來執行 Format Document,並使用 Ctrl+Shift+A 來執行 Toggle Block Comment。在 macOS 上,同樣的兩個指令則使用 Shift+Option+F 和 Shift+Option+A。這些不是排版錯誤,也不是自訂——它們就是官方記載的預設值,而且正是 VS Code 鍵盤快捷鍵參考資料中的平台選擇器設計來讓你一眼看清的差異。

由於這份表格限定為 20 列,參考資料無法告訴你每一個指令的綁定,但它的密度足以涵蓋平台差異最常出現的類別:Command Palette 存取、Quick Open、設定、鍵盤設定、行編輯、註解、搜尋、格式化、符號動作、整合式終端機和基本檔案操作。每一列儲存一個指令名稱、一個類別和三個平台欄位,而頁面上的同一個指令名稱,就是你在 VS Code 內建鍵盤快捷鍵編輯器中會搜尋到的同一個字串。三個平台欄位是獨立填入的,而非從一個作業系統複製到另一個,因此 Windows 的列絕不會被默默套用為 Linux 或 macOS 的列。

如何閱讀參考資料中的一列

參考資料中的每一列同時回答三個問題:這個指令叫什麼、屬於哪個類別,以及在 Windows、Linux 和 macOS 上的官方預設綁定是什麼。指令名稱就是你會貼到 VS Code 內建鍵盤快捷鍵編輯器中的字串(例如 "Format Document" 或 "Toggle Integrated Terminal")。類別將指令分組,讓你能一起掃描相關的列。三個平台欄位以純文字撰寫——Ctrl、Shift、Alt、Cmd、Option、Control——這樣你就能搜尋像 "Ctrl+P" 這樣的鍵盤字串,並找到在任何平台上宣告使用它的每個指令,無論 VS Code 平時渲染的是哪種字符。

這份參考資料假設使用標準美式鍵盤配置。像 Ctrl+] 這樣的組合在 AZERTY 或 Dvorak 配置上會產生不同的字元,而參考資料並不會為你轉譯配置。如果你使用非美式配置,請把按鍵組合視為一個標籤,並透過視覺方式確認實體按鍵,而不是用字串比對。F1、F2 和 F12 等功能鍵也可能被筆電硬體切換鍵或 BIOS 設定攔截,這表示按下該鍵根本不會產生 VS Code 能讀取的按鍵——參考資料是正確的,但該按鍵根本沒有送達編輯器。搜尋只會對固定的瀏覽器內表格執行,因此要確認你的機器上實際作用中的綁定,唯一的方法就是讀取內建編輯器中的即時列。

將預設值與 VS Code 實際顯示的內容進行比較

一旦你從參考資料取得官方預設值,下一步就是與你的機器上 VS Code 實際使用的綁定進行比較。在 Windows 或 Linux 上使用 Ctrl+K Ctrl+S,或在 macOS 上使用 Cmd+K Cmd+S,開啟鍵盤快捷鍵編輯器。在搜尋框中輸入來自參考資料的指令名稱——例如 "Format Document"——然後讀取出現的列。Keybinding 欄位顯示作用中的綁定,Source 欄位顯示綁定的來源(System、Extension 或 User),When 欄位顯示限制綁定觸發情境的 context 子句。如果你在編輯器中看到的列與參考資料中你作業系統對應的平台欄位相符,則代表該官方預設值在你的安裝環境中確實生效。

指令類別WindowsLinuxmacOS
Show All Commands (Command Palette)NavigationCtrl+Shift+PCtrl+Shift+PCmd+Shift+P
Quick Open FileNavigationCtrl+PCtrl+PCmd+P
Delete LineLine editingCtrl+Shift+KCtrl+Shift+KCmd+Shift+K
Insert Line BelowLine editingCtrl+EnterCtrl+EnterCmd+Enter
Toggle Line CommentCommentsCtrl+/Ctrl+/Cmd+/
Toggle Block CommentCommentsShift+Alt+ACtrl+Shift+AShift+Option+A
Format DocumentFormattingShift+Alt+FCtrl+Shift+IShift+Option+F
Toggle Integrated TerminalTerminalCtrl+`Ctrl+`Ctrl+`

此表格反映了 VS Code 鍵盤快捷鍵參考資料中被實作視為黃金對應的八列,這表示每個數值都經過來源核對,比對 Microsoft 當前的 Windows、Linux 和 macOS 快捷鍵 PDF。如果你在 VS Code 中看到的列與你作業系統對應的平台欄位相符,則該預設值正在生效。如果該列是空的,表示該指令在你的平台上沒有預設值,你將需要自行新增綁定。如果該列顯示一個你沒有預期的綁定,最常見的原因是某個擴充功能已經為同一個指令註冊了它自己的組合——在該列上按右鍵並選擇 Show Same Keybindings,即可查看宣告該組合的每個指令。

編輯器載入後,哪些因素會改變預設值

官方記載的預設值並非保證。在參考資料和你實際按下的按鍵之間,有好幾個層級可能介入。使用者的 keybindings.json 是最上層,對於符合的規則會覆寫其下所有層級。工作區的 .vscode/keybindings.json 只能在開啟的資料夾內部覆寫預設值。擴充功能貢獻的綁定位於使用者規則之下、內建預設值之上,因此像 Vim、Emacs 或 JetBrains Keybindings 這類鍵盤配置擴充功能,可以使用廣泛的 when 子句重新綁定常用指令,並在不知不覺中贏過編輯器的內建預設值。其他生產力擴充功能可能會新增 when 子句,在特定檔案類型或焦點狀態之外抑制預設值,這就是為什麼在某個檔案中有效的快捷鍵,在另一個檔案中卻不會觸發。

在編輯器之外,你的作業系統可能會保留一些組合,讓 VS Code 根本看不到。Linux 視窗管理員特別常見,會在 VS Code 讀取按鍵之前先擷取 Ctrl+Alt 組合,而 macOS 的系統快捷鍵在全域應用程式中可能會覆寫編輯器快捷鍵。透過 SSH 或 WSL 進行遠端開發時,會從不同的機器載入綁定,在本地有效的預設值在遠端主機上可能會遺失或被重新對應。輔助技術也可能會安裝全域熱鍵,在 VS Code 之前就消耗掉按鍵事件。這份參考資料無法偵測上述任何覆寫,因為它是一份固定的瀏覽器內表格,不會讀取你的 VS Code 設定,也不會監控全域鍵盤輸入——要確認你的機器上實際作用中的綁定,唯一的方法就是讀取內建編輯器中的該列,並在需要時執行下文所述的疑難排解指令。

正確解讀組合鍵與情境規則

像 Ctrl+K Ctrl+S 這樣的組合是兩次連續的按鍵動作,而不是一次同時按下四鍵。你先按下 Ctrl+K、放開,然後在第一個按鍵仍在編輯器的組合緩衝區中時按下 Ctrl+S。如果你同時按住四個鍵,VS Code 會視為不同的按鍵組合,該指令就不會觸發。組合語法在每個平台上都相同;只有修飾鍵會改變,因此 Linux 使用者按下 Ctrl+K Ctrl+S 會到達與 Windows 使用者按下 Ctrl+K Ctrl+S 相同的編輯器,而 macOS 使用者按下 Cmd+K Cmd+S 也會到達相同的編輯器。

每條規則還可以包含一個 when 子句,限制其觸發的情境——例如只在文字編輯器取得焦點時、只在筆記本內、或只在開啟特定檔案類型時。「在某個檔案有效、在另一個檔案無效」的預設值,通常代表該規則的 when 子句排除了你正在測試的檔案。官方的 VS Code keybindings documentation 描述了完整的 context 鍵集合以及範圍如何組合,當某個綁定在你的機器上表現得與預設表格所建議的不同時,它就是最具權威性的參考來源。參考頁面本身不會解析 when 子句;它只列出官方記載的預設值,因此任何與情境相關的調查,都應在內建編輯器中進行,而非在對照表格中進行。

診斷與參考資料不符的快捷鍵

當鍵盤快捷鍵編輯器中的作用中綁定與官方記載的預設值不符時,請從 Command Palette 執行 Developer: Toggle Keyboard Shortcuts Troubleshooting。視窗底部會開啟一個小面板,在你打字時顯示 VS Code 接收到的原始按鍵,以及所分派的指令。按下你正在調查的組合,並讀取出現的指令。如果分派的是不同的指令,表示你找到了擴充功能的覆寫或一條競爭的使用者規則。如果根本沒有出現任何指令,表示該按鍵事件在 VS Code 看到之前就被擷取——通常是被作業系統、視窗管理員、輔助工具或筆電韌體擷取。如果指令相符,但綁定仍然感覺不對,請再次檢查該規則上的 when 子句:該綁定可能被限定在一個不包含你所在檢視的情境中。

對於不在 20 列參考資料中的指令,請勿假設它們沒有預設值。請開啟鍵盤快捷鍵編輯器,輸入部分指令名稱,並讀取 VS Code 已經顯示的綁定。如需完整的平台目錄,請查閱 VS Code keybindings documentation 以及參考資料所引用的 Windows、Linux 和 macOS 快捷鍵 PDF,其中列出了每個內建指令及其當前預設值。這份參考資料是一個針對 20 個最常被比較指令的快速篩選器,而非完整編輯器或平台 PDF 的替代品。

20 列參考表刻意省略的內容

這份參考表是有意設限的。它涵蓋了 20 個常見的預設指令,以及實作上最嚴格測試的八組黃金對應,但並未宣稱列出所有內建或擴充套件提供的指令。它省略了除常見符號動作外的除錯步驟序列、工作與啟動綁定、筆記本專屬指令、聚焦於無障礙功能的替代方案、Vim 與 Emacs 按鍵配置,以及本地化配置變體。如果你需要的指令不在表格中,並不代表該指令沒有預設——而是代表你應該查閱內建編輯器或 Microsoft 的完整平台 PDF。

受限的規模同樣是真相邊界的一部分。由於表格是固定且可稽核的,每一列都能對照 Microsoft 最新的 Windows、Linux 與 macOS 快捷鍵 PDF 進行來源核對,而各平台欄位是獨立填寫的,而非預設彼此相同。一個較大的表格如果把 Windows 的對應複製到 Linux 欄位,將會以這份參考表刻意避免的方式出錯。對於想要變更預設而非稽核預設的讀者,VS Code Keyboard Shortcuts: Find and Change the Default 指南會逐步說明如何在編輯器中找出指令並重新編寫其綁定,而非與平台欄位進行比較。

如需更深入的了解,請參閱 在 IntelliJ IDEA 中格式化 XML:快捷鍵與瀏覽器選項

如需更深入的了解,請參閱 選擇正確的方式來產生 ANSI 色彩碼