快捷鍵

Zed 可以透過位於 ~/.config/zed/keymap.json 的簡單 JSON 檔案進行設定。

預先定義的快捷鍵映射

我們在 zed 儲存庫的快捷鍵映射資料夾 中有越來越多的預先定義快捷鍵映射。我們目前的快捷鍵映射包括:

  • Atom
  • JetBrains
  • SublimeText
  • TextMate
  • VSCode(預設)

這些快捷鍵映射可以透過 settings.json 檔案中的 base_keymap 設定來設定。此外,如果您想從頭開始,您可以將 "None" 提供給該設定。

自訂快捷鍵

存取自訂快捷鍵

您可以透過 + K + S、命令面板或 Zed > 設定 > 開啟快捷鍵 應用程式選單項目開啟 keymap.json

新增自訂快捷鍵

若要自訂快捷鍵,請指定一個上下文和要設定的快捷鍵清單。重新映射現有的快捷鍵會覆蓋現有的快捷鍵,以自訂的快捷鍵為準。

新增一組自訂快捷鍵的範例

[
  {
    "context": "Editor",
    "bindings": {
      "ctrl-w": "editor::SelectLargerSyntaxNode",
      "ctrl-shift-W": "editor::SelectSmallerSyntaxNode",
      "ctrl-c": "editor::Cancel"
    }
  }
]

您可以在 Zed 的 default.json 中查看更多範例

有些快捷鍵無法覆蓋;我們正在處理與此相關的問題。

快捷鍵語法

Zed 不僅可以匹配單個按鍵,還可以匹配按順序鍵入的按鍵序列。"bindings" 映射中的每個按鍵都是以空格分隔的按鍵序列。

每次按鍵都是由修飾鍵和按鍵組成的序列。修飾鍵有:

  • ctrl- 控制鍵
  • cmd-win-super- 用於平台修飾鍵(macOS 上的 Command 鍵、Windows 上的 Windows 鍵和 Linux 上的 Super 鍵)。
  • alt- 用於 Alt 鍵(macOS 上的 Option 鍵)
  • shift- Shift 鍵
  • fn- 功能鍵

按鍵可以是您的鍵盤產生的任何單個 Unicode 字碼點(例如 a0£ç),或任何已命名的按鍵(tabf1shiftcmd)。

一些範例

 "bindings": {
   "cmd-k cmd-s": "zed::OpenKeymap", // matches ⌘-k then ⌘-s
   "space e": "editor::Complete", // type space then e
   "ç": "editor::Complete", // matches ⌥-c
   "shift shift": "file_finder::Toggle", // matches pressing and releasing shift twice
 }

shift- 修飾鍵只能與字母組合使用,以表示大寫字母。例如,shift-g 匹配鍵入 G。雖然在許多鍵盤上,Shift 鍵用於鍵入標點符號,例如 (,但按鍵不被視為已修改,因此 shift-( 不匹配。

alt- 修飾鍵可以在許多配置中用於產生不同的按鍵。例如,在 macOS 美國鍵盤上,組合鍵 alt-c 會鍵入 ç。您可以在快捷鍵映射檔案中匹配其中任何一個,但按照慣例,Zed 將此組合鍵拼寫為 alt-c

可以匹配單獨鍵入修飾鍵的情況。例如,shift shift 可以用於實現 JetBrains 的全域搜尋快捷鍵。在這種情況下,快捷鍵會在釋放按鍵時觸發,而不是在按下按鍵時觸發。

重新映射按鍵

一個常見的需求是能夠將一個按鍵序列映射到另一個按鍵序列。從 Zed 0.124.0 版開始,您可以使用 workspace::SendKeystrokes 操作來做到這一點。

[
  {
    "bindings": {
      "alt-down": ["workspace::SendKeystrokes", "down down down down"],
      "cmd-alt-c": [
        "workspace::SendKeystrokes",
        "cmd-shift-p copy relative path enter"
      ],
      "cmd-alt-r": ["workspace::SendKeystrokes", "cmd-p README enter"]
    }
  },
  {
    "context": "Editor && vim_mode == insert",
    "bindings": {
      "j k": ["workspace::SendKeystrokes", "escape"]
    }
  }
]

這有一些限制,特別是:

  • 任何非同步操作都只會在所有快捷鍵都已分派後才會發生。例如,這意味著雖然您可以使用快捷鍵來開啟檔案(如 cmd-alt-r 範例所示),但您不能發送更多按鍵並希望在新檢視中解釋它們。
    • 其他非同步操作的例子有:與語言伺服器通訊、更改緩衝區的語言、任何需要連線網路的操作。
  • 一次最多可以模擬 100 個按鍵,這是為了避免在快捷鍵內再次觸發 SendKeystrokes 時出現意外的無限遞迴。

SendKeystrokes 的參數是以空格分隔的按鍵序列清單(使用與上述相同的語法)。由於解析按鍵的方式,任何未被辨識為按鍵的區段都將按原樣發送到目前焦點所在的輸入欄位。

將按鍵轉發到終端機

如果您使用的是 Linux 或 Windows,您可能會發現自己希望將按鍵組合轉發到內建的終端機,而不是由 Zed 處理。

例如,ctrl-n 會在 Linux 上的 Zed 中建立一個新分頁。如果您希望在內建終端機獲得焦點時將 ctrl-n 發送到該終端機,請在您的快捷鍵映射中新增以下內容:

{
  "context": "Terminal",
  "bindings": {
    "ctrl-n": ["terminal::SendKeystroke", "ctrl-n"]
  }
}

任務快捷鍵

您也可以將按鍵綁定到啟動在您的 tasks.json 中定義的 Zed 任務。如需詳細資訊,請參閱任務文件

所有快捷鍵

全域

命令目標預設快捷鍵
切換焦點協作面板⌘ + Shift + C
切換行內提示編輯器Control +
取消選單Control + C
取消選單Control + Escape
取消選單Escape
取消選單⌘ + Escape
確認選單Enter
次要確認選單Control + Enter
次要確認選單⌘ + Enter
選擇第一個選單Page Up
選擇第一個選單Shift + Page Down
選擇第一個選單Shift + Page Up
選擇第一個選單⌘ + Up
選擇最後一個選單Page Down
選擇最後一個選單⌘ + Down
選擇下一個選單Control + N
選擇下一個選單Down
選擇上一個選單Control + P
選擇上一個選單Up
確認輸入選擇器Alt + Enter
確認輸入選擇器⌘ + Alt + Enter
使用選取的查詢選擇器Shift + Enter
關閉視窗工作區⌘ + Shift + W
追蹤下一個協作者工作區Control + Alt + ⌘ + F
開啟工作區⌘ + O
切換縮放工作區Shift + Escape
偵錯元素Zed⌘ + Alt + I
減少緩衝區字體大小Zed⌘ + -
隱藏Zed⌘ + H
隱藏其他ZedAlt + ⌘ + H
增加緩衝區字體大小Zed⌘ + +
增加緩衝區字體大小Zed⌘ + =
最小化Zed⌘ + M
開啟設定Zed⌘ + ,
結束Zed⌘ + Q
重設緩衝區字體大小Zed⌘ + 0
切換全螢幕ZedControl + ⌘ + F

編輯器

命令目標預設快捷鍵
在上方新增選取範圍編輯器⌘ + Alt + Up
在上方新增選取範圍編輯器⌘ + Control + P
在下方新增選取範圍編輯器⌘ + Alt + Down
在下方新增選取範圍編輯器⌘ + Control + N
Backspace編輯器Backspace
Backspace編輯器Control + H
Backspace編輯器Shift + Backspace
取消編輯器Escape
確認程式碼動作編輯器Enter
確認自動完成編輯器Enter
確認自動完成編輯器Tab
確認重新命名編輯器Enter
上下文選單第一個編輯器Page Up
上下文選單最後一個編輯器Page Down
上下文選單下一個編輯器Control + N
上下文選單下一個編輯器Down
上下文選單上一個編輯器Control + P
上下文選單上一個編輯器Up
複製編輯器⌘ + C
剪下編輯器⌘ + X
剪下到行尾編輯器Control + K
刪除編輯器Control + D
刪除編輯器刪除
刪除行編輯器⌘ + Shift + K
刪除到行首編輯器⌘ + Backspace
刪除到行尾編輯器⌘ + Delete
刪除到下一個子字詞結尾編輯器Control + Alt + D
刪除到下一個子字詞結尾編輯器Control + Alt + Delete
刪除到下一個字詞結尾編輯器Alt + D
刪除到下一個字詞結尾編輯器Alt + Delete
刪除到上一個子字詞開頭編輯器Control + Alt + Backspace
刪除到上一個子字詞開頭編輯器Control + Alt + H
刪除到上一個字詞開頭編輯器Alt + Backspace
刪除到上一個字詞開頭編輯器Alt + H
刪除到上一個字詞開頭編輯器Control + W
顯示游標名稱編輯器Control + ⌘ + C
向下複製行編輯器Alt + Shift + Down
向上複製行編輯器Alt + Shift + Up
尋找所有參考編輯器Alt + Shift + F12
摺疊編輯器Alt + ⌘ + [
格式化編輯器⌘ + Shift + I
前往定義編輯器F12
前往定義(分割)編輯器Alt + F12
前往診斷編輯器F8
前往實作編輯器Shift + F12
前往上一個診斷編輯器Shift + F8
前往類型定義編輯器⌘ + F12
前往類型定義(分割)編輯器Alt + ⌘ + F12
懸停編輯器⌘ + K, ⌘ + I
縮排編輯器⌘ + ]
合併行編輯器Control + J
向下移動編輯器Control + N
向下移動編輯器Down
向左移動編輯器Control + B
向左移動編輯器Left
向下移動行編輯器Alt + Down
向上移動行編輯器Alt + Up
向下移動頁面編輯器Control + V
向下移動頁面編輯器Shift + Page Down
向上移動頁面編輯器Alt + V
向上移動頁面編輯器Shift + Page Up
向右移動編輯器Control + F
向右移動編輯器Right
移至開頭編輯器⌘ + Up
移至行首編輯器Control + A
移至行首編輯器Home
移至行首編輯器⌘ + Left
移至括號編輯器Control + M
移至結尾編輯器⌘ + Down
移至行尾編輯器Control + E
移至行尾編輯器End
移至行尾編輯器⌘ + Right
移至段落結尾編輯器Control + Down
移至下一個子字詞結尾編輯器Control + Alt + F
移至下一個子字詞結尾編輯器Control + Alt + Right
移至下一個字詞結尾編輯器Alt + F
移至下一個字詞結尾編輯器Alt + Right
移至上一個子字詞開頭編輯器Control + Alt + B
移至上一個子字詞開頭編輯器Control + Alt + Left
移至上一個字詞開頭編輯器Alt + B
移至上一個字詞開頭編輯器Alt + Left
移至段落開頭編輯器Control + Up
向上移動編輯器Control + P
向上移動編輯器Up
下一螢幕編輯器Control + L
取消縮排編輯器⌘ + [
向下翻頁編輯器Page Down
向上翻頁編輯器Page Up
貼上編輯器⌘ + V
重做編輯器⌘ + Shift + Z
重做選取範圍編輯器⌘ + Shift + U
重新命名編輯器F2
在檔案總管中顯示編輯器Alt + ⌘ + R
切換區塊差異編輯器⌘ + '
展開所有區塊差異編輯器⌘ + "
還原選取的區塊編輯器⌘ + Alt + Z
全選編輯器⌘ + A
選取所有相符項目編輯器⌘ + Shift + L
向下選取編輯器Control + Shift + N
向下選取編輯器Shift + 向下鍵
選取較大的語法節點編輯器Control + Shift + 向右鍵
向左選取編輯器Control + Shift + B
向左選取編輯器Shift + 向左鍵
選取行編輯器⌘ + L
選擇下一個編輯器⌘ + D
選擇下一個編輯器⌘ + K, ⌘ + D
選取上一個編輯器Control + ⌘ + D
選取上一個編輯器⌘ + K, Control + ⌘ + D
向右選取編輯器Control + Shift + F
向右選取編輯器Shift + 向右鍵
選取較小的語法節點編輯器Control + Shift + 向左鍵
選取到開頭編輯器⌘ + Shift + 向上鍵
選取到行首編輯器Control + Shift + A
選取到行首編輯器Shift + Home
選取到行首編輯器⌘ + Shift + 向左鍵
選取到結尾編輯器⌘ + Shift + 向下鍵
選取到行尾編輯器Control + Shift + E
選取到行尾編輯器Shift + End
選取到行尾編輯器⌘ + Shift + 向右鍵
選取到段落結尾編輯器Control + Shift + 向下鍵
選取到下一個子詞尾編輯器Control + Alt + Shift + F
選取到下一個子詞尾編輯器Control + Alt + Shift + 向右鍵
選取到下一個詞尾編輯器Alt + Shift + F
選取到下一個詞尾編輯器Alt + Shift + 向右鍵
選取到上一個子詞首編輯器Control + Alt + Shift + B
選取到上一個子詞首編輯器Control + Alt + Shift + 向左鍵
選取到上一個詞首編輯器Alt + Shift + B
選取到上一個詞首編輯器Alt + Shift + 向左鍵
選取到段落開頭編輯器Control + Shift + 向上鍵
向上選取編輯器Control + Shift + P
向上選取編輯器Shift + 向上鍵
顯示字元面板編輯器Control + ⌘ + 空白鍵
顯示程式碼片段編輯器Control + 空白鍵
顯示行內程式碼片段編輯器Alt + \
Tab編輯器Tab
上一個分頁編輯器Shift + Tab
切換程式碼動作編輯器⌘ + .
切換註解編輯器⌘ + /
切換 Git 追蹤編輯器⌘ + Alt + G, B
切換行號編輯器⌘ + ;
轉置編輯器Control + T
復原編輯器⌘ + Z
復原選取編輯器⌘ + U
展開行編輯器Alt + ⌘ + ]

編輯器(僅限完整模式)

命令目標預設快捷鍵
行內輔助輔助Control + Enter
將選取範圍加上引號輔助⌘ + >
部署緩衝區搜尋⌘ + Alt + F
部署緩衝區搜尋⌘ + E
部署緩衝區搜尋⌘ + F
接受部分行內程式碼片段編輯器Alt + Right
前往區塊編輯器⌘ + F8
前往上一個區塊編輯器⌘ + Shift + F8
新增一行編輯器Enter
新增一行編輯器Shift + Enter
在上方新增一行編輯器⌘ + Shift + Enter
在下方新增一行編輯器⌘ + Enter
下一個行內程式碼片段編輯器Alt + ]
開啟摘錄編輯器Alt + Enter
以分割視窗開啟摘錄編輯器⌘ + K, Enter
上一個行內程式碼片段編輯器Alt + [
切換自動換行編輯器Alt + Z
切換前往行數Control + G
切換大綱⌘ + Shift + O

編輯器(僅限自動調整高度)

命令目標預設快捷鍵
新增一行編輯器Control + Enter
新增一行編輯器Shift + Enter
在下方新增一行編輯器Control + Shift + Enter

窗格

命令目標預設快捷鍵
啟用項目 1窗格Control + 1
啟用項目 2窗格Control + 2
啟用項目 3窗格Control + 3
啟用項目 4窗格Control + 4
啟用項目 5窗格Control + 5
啟用項目 6窗格Control + 6
啟用項目 7窗格Control + 7
啟用項目 8窗格Control + 8
啟用項目 9窗格Control + 9
啟用最後一個項目窗格Control + 0
啟用下一個項目窗格Alt + ⌘ + 向右鍵
啟用下一個項目窗格⌘ + }
啟用上一個項目窗格Alt + ⌘ + 向左鍵
啟用上一個項目窗格⌘ + {
關閉啟用項目窗格⌘ + W
關閉所有項目窗格⌘ + K, ⌘ + W
關閉乾淨項目窗格⌘ + K, U
關閉非啟用項目窗格Alt + ⌘ + T
返回窗格Control + -
前進窗格Control + _
重新開啟已關閉項目窗格⌘ + Shift + T
向下分割窗格⌘ + K, 向下鍵
向左分割窗格⌘ + K, 向左鍵
向右分割窗格⌘ + K, 向右鍵
向上分割窗格⌘ + K, 向上鍵
切換篩選器專案搜尋Alt + ⌘ + F
切換焦點專案搜尋⌘ + F
切換焦點專案搜尋⌘ + Shift + F
啟用正規表示式模式搜尋Alt + ⌘ + G
啟用文字模式搜尋Alt + ⌘ + X
循環切換模式搜尋Alt + Tab
選取所有相符項目搜尋Alt + Enter
選取下一個相符項目搜尋⌘ + G
選取上一個相符項目搜尋⌘ + Shift + G
切換區分大小寫搜尋Alt + ⌘ + C
切換取代搜尋⌘ + Shift + H
切換完整單字搜尋Alt + ⌘ + W
關閉非啟用分頁和窗格工作區Control + Alt + ⌘ + W
命令目標預設快捷鍵
關閉緩衝區搜尋Escape
聚焦編輯器緩衝區搜尋Tab
循環切換模式搜尋Alt + Tab
聚焦搜尋搜尋⌘ + F
下一個歷史查詢搜尋Down
上一個歷史查詢搜尋Up
全部取代搜尋⌘ + Enter
取代下一個搜尋Enter
選取所有相符項目搜尋Alt + Enter
選取下一個相符項目搜尋Enter
選取上一個相符項目搜尋Shift + Enter
切換取代搜尋⌘ + Alt + F

工作區

命令目標預設快捷鍵
切換焦點輔助⌘ + ?
開啟最近檔案分支Alt + ⌘ + B
切換命令面板⌘ + Shift + P
部署診斷⌘ + Shift + M
切換檔案搜尋器⌘ + P
切換語言選取器⌘ + K, M
部署搜尋窗格⌘ + Shift + F
部署搜尋窗格⌘ + Shift + H
切換焦點專案面板⌘ + Shift + E
切換專案符號⌘ + T
開啟最近檔案專案Alt + ⌘ + O
切換分頁切換器Control + Shift + Tab
切換分頁切換器Control + Tab
重新執行工作Alt + T
產生工作Alt + Shift + T
切換焦點終端機面板Control + `
切換佈景主題選取器⌘ + K, ⌘ + T
啟用窗格 1工作區⌘ + 1
啟用窗格 2工作區⌘ + 2
啟用窗格 3工作區⌘ + 3
啟用窗格 4工作區⌘ + 4
啟用窗格 5工作區⌘ + 5
啟用窗格 6工作區⌘ + 6
啟用窗格 7工作區⌘ + 7
啟用窗格 8工作區⌘ + 8
啟用窗格 9工作區⌘ + 9
向下啟用窗格工作區⌘ + K, ⌘ + 向下鍵
向左啟用窗格工作區⌘ + K, ⌘ + 向左鍵
向右啟用窗格工作區⌘ + K, ⌘ + 向右鍵
向上啟用窗格工作區⌘ + K, ⌘ + 向上鍵
關閉所有停靠區工作區Alt + ⌘ + Y
新增檔案工作區⌘ + N
新增終端機工作區Control + ~
新增視窗工作區⌘ + Shift + N
儲存工作區⌘ + S
全部儲存工作區⌘ + Alt + S
另存新檔工作區⌘ + Shift + S
儲存但不格式化工作區⌘ + K, S
依方向交換窗格工作區⌘ + K, Shift + 向下鍵
依方向交換窗格工作區⌘ + K, Shift + 向左鍵
依方向交換窗格工作區⌘ + K, Shift + 向右鍵
依方向交換窗格工作區⌘ + K, Shift + 向上鍵
切換底部停靠區工作區⌘ + J
切換左側停靠區工作區⌘ + B
切換右側停靠區工作區⌘ + R
取消追蹤工作區Escape
開啟快速鍵Zed⌘ + K, ⌘ + S

專案面板

命令目標預設快捷鍵
摺疊選取的項目專案面板Left
複製專案面板⌘ + C
複製路徑專案面板⌘ + Alt + C
複製相對路徑專案面板Alt + ⌘ + Shift + C
剪下專案面板⌘ + X
刪除專案面板Backspace
刪除專案面板刪除
刪除專案面板⌘ + Backspace
刪除專案面板⌘ + Delete
展開選取的項目專案面板Right
新增目錄專案面板Alt + ⌘ + N
新增檔案專案面板⌘ + N
在目錄中新增搜尋專案面板Alt + Shift + F
開啟專案面板空白鍵
貼上專案面板⌘ + V
重新命名專案面板Enter
重新命名專案面板F2
在檔案總管中顯示專案面板Alt + ⌘ + R
命令目標預設快捷鍵
在新視窗中搜尋專案搜尋⌘ + Enter
切換焦點專案搜尋Escape
啟用正規表示式模式搜尋Alt + ⌘ + G
啟用文字模式搜尋Alt + ⌘ + X
循環切換模式搜尋Alt + Tab
聚焦搜尋搜尋⌘ + Shift + F
下一個歷史查詢搜尋Down
上一個歷史查詢搜尋Up
全部取代搜尋⌘ + Enter
取代下一個搜尋Enter
切換取代搜尋⌘ + Shift + H

終端機

命令目標預設快捷鍵
清除終端機⌘ + K
複製終端機⌘ + C
刪除行終端機⌘ + Backspace
移至行首終端機⌘ + Left
移至行尾終端機⌘ + Right
移至下一個字詞結尾終端機Alt + Right
移至上一個字詞開頭終端機Alt + Left
貼上終端機⌘ + V
顯示字元面板終端機Control + ⌘ + 空白鍵

輔助編輯器

命令目標預設快捷鍵
輔助輔助⌘ + Enter
循環切換訊息角色輔助Control + R
將選取範圍加上引號輔助⌘ + >
分割輔助Shift + Enter
儲存工作區⌘ + S