🔧

VSCodeユーザーのためのZedの設定

2024/10/09に公開

キーマップ指定

vscodeのkeymapに設定

settings.json
{
  "base_keymap": "VSCode",
}

これ指定すると、大体VSCodeと同じショートカットキーで操作することができる

font

みんなよく使う、Fira Codeも設定できます、しかもしっかり、signaturesも効く。

settings.json
{
  "ui_font_size": 16,
  "ui_font_family": "Fira Code",
  "ui_font_weight": 450,
  "buffer_font_size": 20,
  "buffer_font_family": "Fira Code",
  "buffer_font_features": {
    "calt": true,
    "liga": true,
    "ss02": true,
    "ss03": true,
    "ss04": true,
    "ss05": true,
    "zero": true
  },
}

なんと、VSCodeではできない、UIのフォントも指定できるぞ!
buffer_font_featuresを細かく指定すると、signaturesが効くようになる

Image from Gyazo

自動更新

これやらないと、自動アップデートがしてくれない

settings.json
{
    "auto_update": true
}

Formatterの設定

デフォルトのフォーマッターはprettierベースした言語サーバーのフォーマッターっぽいので、prettierに強制させる。

settings.json
{
"languages": {
    "JavaScript": {
      "formatter": {
        "external": {
          "command": "node_modules/.bin/prettier",
          "arguments": ["--stdin-filepath", "{buffer_path}"]
        }
      }
    },
    "TypeScript": {
      "formatter": {
        "external": {
          "command": "node_modules/.bin/prettier",
          "arguments": ["--stdin-filepath", "{buffer_path}"]
        }
      }
    },
    "TSX": {
      "formatter": {
        "external": {
          "command": "node_modules/.bin/prettier",
          "arguments": ["--stdin-filepath", "{buffer_path}"]
        }
      }
    }
  },
  "format_on_save": "on"
}

これはそのうち、プラグインでどうにかできたらいいなと思っている。

参照
https://zed.dev/docs/languages/javascript#code-formatting

keymapsの設定

CMD + spaceでsuggestionをとトリガーするためのkeymapです

~/.config/zed/keymap.json
[
    {
        "context": "Editor",
        "bindings": {
          "cmd-space": "editor::ShowCompletions"
        }
    }
]

vimmer用

settings.json
{
    "vim_mode": true,
    "relative_line_numbers": true,
    "vim": {
        "use_system_clipboard": "always",
        "use_multiline_find": true
    }
}

file explorerはj k lで移動できないので、keybindingsの設定をする必要があります。
追加で、neo-treeのようなkeymapも追加しておく。

~/.config/zed/keymap.json
[
  {
    "context": "Editor && VimControl && !VimWaiting && !menu",
    "bindings": {
      "ctrl-e": "project_panel::ToggleFocus",
      "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
      "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
      "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
      "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]
    }
  },
  {
    "context": "ProjectPanel && not_editing",
    "bindings": {
      // https://github.com/zed-industries/zed/issues/4753
      // https://github.com/zed-industries/zed/issues/4270
      "o": "project_panel::NewDirectory",
      "a": "project_panel::NewFile",
      "r": "project_panel::Rename",
      "x": "project_panel::Cut",
      "y": "project_panel::Copy",
      "p": "project_panel::Paste",
      "d": "project_panel::Delete",
      // Directory expansion
      "l": "project_panel::ExpandSelectedEntry",
      "h": "project_panel::CollapseSelectedEntry",
      // Move up and down
      "j": "menu::SelectNext",
      "k": "menu::SelectPrev"
    }
  }
]

続く。。。

Discussion