キーバインド

Zedは、~/.config/zed/keymap.jsonにあるシンプルなJSONファイルで設定できます。

プリセットキーマップ

zedリポジトリのkeymapsフォルダには、プリセットキーマップが多数用意されています。現在のキーマップには、以下が含まれています。

  • 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- シフトキー
  • 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-gGの入力に一致します。多くのキーボードではシフトキーを使用して(などの句読点記号を入力しますが、キー押下は修飾されていないとみなされるため、shift-(は一致しません。

alt-修飾子は、多くのレイアウトで異なるキーを生成するために使用できます。たとえば、macOS USキーボードでは、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ではなく組み込みターミナルに転送したい場合があります。

たとえば、Linuxではctrl-nで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
最初を選択メニュー⌘ + 上
最後を選択メニューPage Down
最後を選択メニュー⌘ + 下
次を選択メニューControl + N
次を選択メニュー
前を選択メニューControl + P
前を選択メニュー
入力を確認ピッカー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 + 上
上に選択を追加エディタ⌘ + Control + P
下に選択を追加エディタ⌘ + Alt + 下
下に選択を追加エディタ⌘ + Control + N
BackspaceエディタBackspace
BackspaceエディタControl + H
BackspaceエディタShift + Backspace
キャンセルエディタEscape
コードアクションを確認エディタEnter
補完を確認エディタEnter
補完を確認エディタTab
名前変更を確認エディタEnter
コンテキストメニューの先頭エディタPage Up
コンテキストメニューの最後エディタPage Down
コンテキストメニューの次エディタControl + N
コンテキストメニューの次エディタ
コンテキストメニューの前エディタControl + P
コンテキストメニューの前エディタ
コピーエディタ⌘ + 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 + 下
上へ行を複製エディタAlt + Shift + 上
すべての参照を検索エディタAlt + Shift + F12
折りたたみエディタAlt + ⌘ + [
フォーマットエディタ⌘ + Shift + I
定義へ移動エディタF12
定義へ移動(分割)エディタAlt + F12
診断へ移動エディタF8
実装へ移動エディタShift + F12
前の診断へ移動エディタShift + F8
型定義へ移動エディタ⌘ + F12
型定義へ移動(分割)エディタAlt + ⌘ + F12
ホバーエディタ⌘ + K, ⌘ + I
インデントエディタ⌘ + ]
行を結合エディタControl + J
下へ移動エディタControl + N
下へ移動エディタ
左へ移動エディタControl + B
左へ移動エディタ
行を下へ移動エディタAlt + 下
行を上へ移動エディタAlt + 上
ページダウンエディタControl + V
ページダウンエディタShift + Page Down
ページアップエディタAlt + V
ページアップエディタShift + Page Up
右へ移動エディタControl + F
右へ移動エディタ
先頭へ移動エディタ⌘ + 上
行頭へ移動エディタControl + A
行頭へ移動エディタHome
行頭へ移動エディタ⌘ + 左
囲んでいる括弧へ移動エディタControl + M
末尾へ移動エディタ⌘ + 下
行末へ移動エディタControl + E
行末へ移動エディタEnd
行末へ移動エディタ⌘ + 右
段落の末尾へ移動エディタControl + 下
次のサブワードの末尾へ移動エディタControl + Alt + F
次のサブワードの末尾へ移動エディタControl + Alt + 右
次の単語の末尾へ移動エディタAlt + F
次の単語の末尾へ移動エディタAlt + 右
前のサブワードの先頭へ移動エディタControl + Alt + B
前のサブワードの先頭へ移動エディタControl + Alt + 左
前の単語の先頭へ移動エディタAlt + B
前の単語の先頭へ移動エディタAlt + 左
段落の先頭へ移動エディタControl + 上
上へ移動エディタControl + P
上へ移動エディタ
次の画面エディタControl + L
アウトデントエディタ⌘ + [
Page DownエディタPage Down
Page Upエディタ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 blameの切り替えエディタ⌘ + Alt + G, B
行番号の切り替えエディタ⌘ + ;
文字の入れ替えエディタControl + T
元に戻すエディタ⌘ + Z
選択を元に戻すエディタ⌘ + U
行の折りたたみ解除エディタAlt + ⌘ + ]

エディタ(フルスクリーンのみ)

コマンドターゲットデフォルトショートカット
インラインアシストアシスタントControl + Enter
選択範囲を引用符で囲むアシスタント⌘ + >
デプロイバッファ検索⌘ + Alt + F
デプロイバッファ検索⌘ + E
デプロイバッファ検索⌘ + F
部分的なインライン補完を受け入れるエディタAlt + 右
ハンクへ移動エディタ⌘ + 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
次の履歴クエリ検索
前の履歴クエリ検索
すべて置換検索⌘ + 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

プロジェクトパネル

コマンドターゲットデフォルトショートカット
選択したエントリを折りたたむプロジェクトパネル
コピープロジェクトパネル⌘ + C
パスをコピープロジェクトパネル⌘ + Alt + C
相対パスをコピープロジェクトパネルAlt + ⌘ + Shift + C
切り取りプロジェクトパネル⌘ + X
削除プロジェクトパネルBackspace
削除プロジェクトパネル削除
削除プロジェクトパネル⌘ + Backspace
削除プロジェクトパネル⌘ + Delete
選択したエントリを展開プロジェクトパネル
新しいディレクトリプロジェクトパネルAlt + ⌘ + N
新しいファイルプロジェクトパネル⌘ + N
ディレクトリ内で新規検索プロジェクトパネルAlt + Shift + F
開くプロジェクトパネルスペース
ペーストプロジェクトパネル⌘ + V
名前変更プロジェクトパネルEnter
名前変更プロジェクトパネルF2
ファイルマネージャで表示プロジェクトパネルAlt + ⌘ + R
コマンドターゲットデフォルトショートカット
新規検索プロジェクト検索⌘ + Enter
フォーカスを切り替えるプロジェクト検索Escape
正規表現モードをアクティブにする検索Alt + ⌘ + G
テキストモードをアクティブにする検索Alt + ⌘ + X
モードを切り替える検索Alt + Tab
検索にフォーカス検索⌘ + Shift + F
次の履歴クエリ検索
前の履歴クエリ検索
すべて置換検索⌘ + Enter
次を置換検索Enter
置換の切り替え検索⌘ + Shift + H

ターミナル

コマンドターゲットデフォルトショートカット
クリアターミナル⌘ + K
コピーターミナル⌘ + C
行削除ターミナル⌘ + Backspace
行頭へ移動ターミナル⌘ + 左
行末へ移動ターミナル⌘ + 右
次の単語の末尾へ移動ターミナルAlt + 右
前の単語の先頭へ移動ターミナルAlt + 左
ペーストターミナル⌘ + V
文字パレットを表示ターミナルControl + ⌘ + スペース

アシスタントエディタ

コマンドターゲットデフォルトショートカット
アシストアシスタント⌘ + Enter
メッセージの役割を切り替えるアシスタントControl + R
選択範囲を引用符で囲むアシスタント⌘ + >
分割アシスタントShift + Enter
保存ワークスペース⌘ + S