配置Zed快捷键

Zed官网的文档对于快捷键介绍不是特别完全, 所以这里简单记录一下

Base Keymap

从其它编辑器中转过来的同学们可以选择一个自己之前熟悉的方案

左上角Zed -> Open Settings -> Keymap -> Base Keymap

这里我选择的是: JetBrains,但依然有些配置不满意,或者和JetBrains的不一样,所以就需要自己配置了

简单配置

以命令面板为例,默认的是shift+shift,我想改为ctrl-p

  • 点击左上角Zed -> Open Keymap File
  • 写入如下配置
1
2
3
4
5
6
7
8
[
  {
    "context": "Workspace",
    "bindings": {
      "ctrl-p": "command_palette::Toggle"
    }
  }
]
  • 那么如何知道ctrl-p对应的操作就是 "command_palette::Toggle" 呢,可以打开默认的快捷键配置文件,然后 Ctrl-F 搜索快捷键即可知道对应的Action

略微复杂配置

  • 之前使用 Windows,用的是Windows Terminal,在Windows Terminal上Ctrl+C有选中时就是复制语义,否则就只是Ctrl+C
  • 当前的系统是 Arch Linux,终端中的复制默认是:Ctrl+Shift+C,粘贴是:Ctrl+Shift+V
  • 修改
    • 首先在默认的快捷键配置文件中找到 Action,发现是:terminal::Copyterminal::Paste,以及["terminal::SendKeystroke", "ctrl-c"]
    • 我们的目的是让 Ctrl-C 分条件选择 terminal::Copy["terminal::SendKeystroke", "ctrl-c"],核心是:找到在终端环境时,选中和不选中时的上下文差别
    • 根据文档我们需要打开命令面板,然后输入:dev: open key context view,如下图所示:keybind
    • 打开终端,观察上下文树:context
    • 打开终端,鼠标选中一段文本,观察上下文树:context_selection
    • 找到了上下文差别,就可以写快捷键了,如下所示:
    •  1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      [
        {
          "context": "Terminal",
          "bindings": {
            "ctrl-v": "terminal::Paste"
          }
        },
        {
          "context": "Terminal && selection",
          "bindings": {
            "ctrl-c": "terminal::Copy"
          }
        },
        {
          "context": "Terminal && !selection",
          "bindings": {
            "ctrl-c": ["terminal::SendKeystroke", "ctrl-c"]
          }
        }
      ]

总结

依照官方文档所说,大部分操作都有快捷键,通过刚才的方式可以实现大部分的配置