いま一番好きなエディタ、Zed - エムスリーテックブログ

エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

いま一番好きなエディタ、Zed

【デジスマ ブログリレー 3日目】

デジスマチームの立花です。 突然ですが皆さんはどのエディタが好きでしょうか。 僕は Helix が好きでよく使っているのですが、 最近また好きなエディタが増えました。Zedです。

zed.dev

動作の軽快さに惹かれて使い始めたのですが、触っていくうちに「これは便利だな」と感じる機能がいくつもあったので、 本記事ではその中から特に日々の開発で役立っているものを紹介します。

1. タブ切り替え

地味ですが意外とこれが一番好きなポイントかもしれません。

  • ターミナルタブも通常のファイルタブと同じように扱える
  • Ctrl+Tab / Ctrl+Shift+Tab でタブ間を移動できる

ターミナルタブを通常のファイルタブの隣に置けるというのが個人的にはかなり手に馴染みました。 ファイル編集中に Ctrl+Tab でターミナルと行き来できます。

タブ切り替え時、デフォルトでは最近使用したタブに移動しますが、アクティブなタブの隣のタブに移動できるようにするにはkeymap.jsonに次の設定を追加します。

[
  {
    "context": "Pane",
    "bindings": {
      "ctrl-tab": "pane::ActivateNextItem",
      "ctrl-shift-tab": "pane::ActivatePreviousItem"
    }
  }
]

ちなみにタブをダブルクリックすることでタブ名を変更することができます。

タブの切り替え

2. エージェントパネル

Zed には AI エージェントを呼び出せるエージェントパネルが組み込まれています。ACP(Agent Client Protocol)経由で Claude Agent などを利用できます。

ひとつ注意点として、Claude Code を ACP 経由で動かすと Agent SDK クレジットが消費されます。 これを避けたい場合は ターミナルスレッド を使うのがおすすめです。 ターミナル上で動くエージェントをそのままエージェントパネルから扱えるため、課金体系を変えずに UI の恩恵だけを受けられます。

エージェントパネル

3. マルチバッファ

Zed では通常は1つだけ表示されているカーソルを複数表示し、複数箇所を同時に編集することができます。

代表的な使い方はこんな感じです。

  1. ファイル内の任意の文字列を選択する
  2. コマンドパレットから editor: select all matches を実行する
  3. ファイル内のすべての一致箇所が選択された状態になる
  4. そのまま編集すると、全箇所が同時に書き換わる

テキスト操作を極めたい方はZed 公式ブログの Text Manipulation Kung Fu for the Aspiring Black Belt の記事がおすすめです。

マルチバッファ

4. アウトラインパネル

ファイル内のシンボル一覧を表示するパネルです。大きなファイルを眺めるときに便利です。

  • Mac の場合
    • Cmd+Shift+B でアウトラインパネルを開く
    • Cmd+Shift+O でアウトラインモーダルを開く
  • 検索バーでシンボル名を絞り込める
  • 検索文字列にスペースを含めると、可視性修飾子(public/private)や宣言タイプまで含めた検索が可能

アウトラインパネル

5. ミニマップ

エディタ右端にミニマップを表示できます。

設定は次から変更できます。

  • Editor > Minimap > Show

ミニマップを有効化する設定

長いファイルでのスクロール位置の把握や、コードの構造を俯瞰したいときに便利です。

ミニマップ

6. ジャーナル

個人的にはこの機能が標準で組み込まれていることに感心しました。 コマンドパレットから journal: new journal entry を実行すると、その日のジャーナルファイルが開きます。 何かすぐにメモを取りたい時に便利です。

保存先のパスは次のように settings.json で変更可能です。

{
  "journal": {
    "path": "~"
  }
}

ジャーナル

7. タスクランナー

Zed には独自のタスクランナーが組み込まれており、現在編集中のファイルパスや選択されたテキストを変数として読み込み、任意のコマンドを実行できます。

  • コマンドパレットから task: spawn でタスクを実行
  • task: rerun で最後に実行したタスクを再実行
  • 設定ファイルは次の2か所
    • グローバル: ~/.config/zed/tasks.json
    • プロジェクト: .zed/tasks.json

選択中の関数名で grep するといった、エディタの状態に依存するコマンドを定型化できるのが強みです。

詳しくは次のドキュメントを参照してください。

Tasks | Tasks - Run Commands in Zed

8. スニペット

コマンドパレットから snippets: configure snippets を実行すると snippets.json が開き、スニペットの登録・変更ができます。

たとえば、次のように記述すると log でログ出力のスニペットが補完されるようになります。

{
  "Log to console": {
    "prefix": "log",
    "body": ["console.info(\"Hello, ${1:World}!\")", "$0"],
    "description": "Logs to console"
  }
}

詳しくは次のドキュメントを参照してください。

Snippets | Snippets - Zed

9. Copy and Trim

インデントされたコードをコピー&ペーストすると、ペースト先のインデントが崩れることがあります。 Zed ではコンテキストメニューから Copy and Trim を選ぶと、余分なスペースが自動的にトリミングされた状態でコピーされ、ペースト時にインデントが崩れません。

小さな機能ですが、Slack や PR コメントへコードを貼り付けるときの「インデント直し」が不要になるので、地味に効きます。

コピー時にトリム

10. システムウィンドウタブを使う(Mac のみ)

Mac では、複数の Zed ウィンドウを macOS 標準のタブとしてまとめることができます。

設定は次から変更できます。

  • Window & Layout > Use System Window Tabs

システムウィンドウタブを使う

複数プロジェクトを並行して触ることが多い人は、ウィンドウが散らからずに済むのでおすすめです。

おわりに

Zed は「速い」「軽い」というだけのエディタではなく、マルチバッファ・タスクランナー・エージェントパネルなど、日々の作業を楽にするための機能が一通り揃っています。 一度に全部使いこなす必要はないので、まずは気になったものから 1 つずつ触ってみてください。

公式ブログの Hidden Gems シリーズに本記事で触れきれなかった便利機能がまとまっています。 気になった方はぜひ覗いてみてください。

We are hiring!!

エムスリーではエンジニアを絶賛募集中です! デジスマ診療や、他にも数多くの医療に関するプロダクトを開発しています。エムスリーでのプロダクト開発に興味がある方、ぜひカジュアル面談にご応募ください!

エンジニア採用ページはこちら

jobs.m3.com