按键绑定

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- Function 键

这些键可以是键盘生成的任何单个 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
向左移动编辑器向左
向下移动行编辑器Alt + Down
向上移动行编辑器Alt + Up
向下移动页面编辑器Control + V
向下移动页面编辑器Shift + Page Down
向上移动页面编辑器Alt + V
向上移动页面编辑器Shift + Page Up
向右移动编辑器Control + F
向右移动编辑器向右
移动到开头编辑器⌘ + Up
移动到行首编辑器Control + A
移动到行首编辑器Home
移动到行首编辑器⌘ + Left
移动到括号内编辑器Control + M
移动到末尾编辑器⌘ + Down
移动到行尾编辑器Control + E
移动到行尾编辑器结束
移动到行尾编辑器⌘ + 向右
移动到段落末尾编辑器Control + 向下
移动到下一个子词末尾编辑器Control + Alt + F
移动到下一个子词末尾编辑器Control + Alt + 向右
移动到下一个单词末尾编辑器Alt + F
移动到下一个单词末尾编辑器Alt + 向右
移动到上一个子词开头编辑器Control + Alt + B
移动到上一个子词开头编辑器Control + Alt + 向左
移动到上一个单词开头编辑器Alt + B
移动到上一个单词开头编辑器Alt + 向左
移动到段落开头编辑器Control + 向上
向上移动编辑器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 + 向右
转到块编辑器⌘ + 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, ⌘ + 向上
关闭所有 Dock工作区Alt + ⌘ + Y
新建文件工作区⌘ + N
新建终端工作区Control + ~
新建窗口工作区⌘ + Shift + N
保存工作区⌘ + S
全部保存工作区⌘ + Alt + S
另存为工作区⌘ + Shift + S
不带格式保存工作区⌘ + K, S
交换方向中的窗格工作区⌘ + K, Shift + 向下
交换方向中的窗格工作区⌘ + K, Shift + 向左
交换方向中的窗格工作区⌘ + K, Shift + 向右
交换方向中的窗格工作区⌘ + K, Shift + 向上
切换底部 Dock工作区⌘ + J
切换左侧 Dock工作区⌘ + B
切换右侧 Dock工作区⌘ + 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
下一个历史记录查询搜索Down
上一个历史记录查询搜索Up
全部替换搜索⌘ + Enter
替换下一个搜索Enter
切换替换搜索⌘ + Shift + H

终端

命令目标默认快捷键
清除终端⌘ + K
复制终端⌘ + C
删除行终端⌘ + Backspace
移动到行首终端⌘ + Left
移动到行尾终端⌘ + 向右
移动到下一个单词末尾终端Alt + 向右
移动到上一个单词开头终端Alt + 向左
粘贴终端⌘ + V
显示字符调色板终端Control + ⌘ + 空格

辅助编辑器

命令目标默认快捷键
辅助助手⌘ + Enter
循环消息角色助手Control + R
引用选择助手⌘ + >
拆分助手Shift + Enter
保存工作区⌘ + S