Neovimを離れてZedへ移行します
(stevedylan.dev)- すべての開発者はそれぞれ独自のテキストエディタ遍歴を持っており、今使っているツールにたどり着くまでの過程を経験している。こうした話は興味深く、開発ツールとそこに注がれた努力に対して大きな感謝を抱かせる
- この記事は、開発ツールに関心のある人たちに自分の遍歴を共有し、新しいツールを試してみることを後押ししたいという思いで書かれている
テキストエディタ遍歴の始まり
- Atomを最初に使い、HTML、CSS、Javascriptの基礎を学び始めた
- その後VSCodeに移行したが、当時妻が写真編集のためにノートPCを使う必要があり、代わりに使ったMacBookではVSCodeのElectronビルドのせいで性能低下が起きていた
- そのとき偶然Vimを見つけ、キーボード中心のワークフローと速度に魅了されてVimを学び始めた
- 初期はVim RCを編集しながら使っており、その後chris@machineの動画を通じてNeovimを知った
- 何年にもわたってNeovimを使い、高い生産性を得ていた。多くの時間を設定調整に費やしたが、最終的にはほとんど設定変更が不要な状態に到達した
変化
- しかし時間が経つにつれて設定ファイルをさらに簡素化し続ける必要があり、基本的な機能を維持するだけでも多くの努力が必要だった
- ときどきプラグインを更新するたびにNeovimで問題が発生し、作業を中断してその解決に時間を使うことになった。これを解消するため設定を簡素化しようとしたが、基本機能を維持するための努力は依然として必要だった
- 特に大きなコードベースで作業すると、Neovimが遅くなったり画面が固まったりする問題が発生し、生産性に支障をきたした
- 別のターミナルエミュレータ(Alacritty、Weztermなど)への移行も試したが、大きな違いはなかった
- 以前からZedのことは聞いていたが、ターミナルベースではないため使うのをやめていた。しかしZedの速さに関する好意的な評価を耳にし、もう一度試すことにした
- 2か月間毎日使った結果、Zedは非常に満足度の高い体験を提供してくれたため、今後も使い続ける予定であり、Neovimに戻るつもりはない
Zedの使用体験
- なぜZedを選ぶに至ったのかを理解してもらうため、これまでの一般的な使用体験と、自分向けにどう調整したかについて説明したい
すべてが「ただ動く」
- Zedの最大の長所のひとつは、「すべてがただ動く」ことだ
- 特に言語サーバープロトコル(LSP)のような機能はNeovimで設定するのに多くの時間がかかるが、Zedでは標準でうまく動作する
- Zedでは「定義を表示」「定義へ移動」「コードアクション」のようなキーバインディングがデフォルトで提供されており、ほとんどの言語をサポートしているため問題が起きない
速度
- Zedを選んだ主な理由のひとつは速度であり、結果的に非常に満足している
- 大きなコードベースでも遅延なく高速に動作し、これまで性能上の問題を経験したことがない
- Neovimをさらに高速化することもできるかもしれないが、生産性向上のために時間を浪費するよりZedを使うほうがよい
Vimモード
- Neovimユーザーとして、VSCodeのVimプラグインが不安定でバグも多く、失望した経験がある
- ZedのVimモードは開発者自身が作った機能で、非常に安定しており、重要な機能をしっかりサポートしている
- キーバインディングの構造は非常に柔軟で、Vimユーザーが好みそうな機能が用意されている
AI機能
- ZedはAI機能も提供しており、標準でCopilotが組み込まれている
- OpenAI、Ollama、AnthropicなどのAIモデルをAPI経由で利用できる
- コードの一部を選択し、
ctrl-enterでAIアシスタントを呼び出してコードを書くインラインアシスタント機能も便利だ
Zed ≠ Neovim
- ZedがNeovimを完全に置き換えられるわけではない。Neovimの大きな強みは、ターミナル上にネイティブに存在することだ
- 簡単なファイル修正にはNeovimのほうが便利だが、長時間のセッションやプロジェクトにはZedが最適だ
Neovimユーザー向けにZedをカスタマイズする
ZedはNeovimの完全な代替ではないが、Neovim/Vimユーザーに親しみやすい環境を提供するため、さまざまな細かな設定によって体験を大きく改善できる
Vimモードとキーバインディング
- 最初にやるべきことはVimモードを有効にすることだ。ZedはVimモードのドキュメントページを提供しており、基本のVimバインディングと追加設定方法を案内している
- Zedの大きな利点のひとつは、Vimモードに応じてキーバインディングを設定できる点だ。たとえば「Normal」モードと「Visual」モードに異なるキーバインディングを適用できる
[
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space b": "editor::ToggleGitBlame",
"shift-k": "editor::Hover",
"space l f": "editor::Format",
"space d": "diagnostics::Deploy",
"space f f": "file_finder::Toggle",
"space o": "tab_switcher::Toggle",
"space e": "workspace::ToggleLeftDock",
"space /": "workspace::NewSearch",
"n": "search::SelectNextMatch",
"shift-n": "search::SelectPrevMatch",
"space t": "workspace::NewCenterTerminal",
"g b": "editor::ToggleComments",
"+ +": "workspace::Save",
"space c": "pane::CloseActiveItem"
}
},
{
"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",
"bindings": {
"shift-j": "editor::MoveLineDown",
"shift-k": "editor::MoveLineUp"
}
},
]
- また、Zedでパネルを切り替えるキーバインディングを設定すれば、Neovimに近いワークフローを作れる
[
{
"context": "Dock || Terminal || Editor",
"bindings": {
"ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]
}
},
]
- 既定のVimキーマップを参照し、必要な設定を調整するのもおすすめだ。既定のVimキーマップは、Zedで何がサポートされているかや、どこを調整すべきかを確認するための有用な参考資料だ
シンプル化したUI
- Zedはもともと最小限のUIを提供しているが、Neovimの設定により近いUIを好むなら、タブバー、スクロールバー、ツールバーなどを無効化できる
{
"cursor_blink": false,
"relative_line_numbers": true,
"scrollbar": {
"show": "never"
},
"vertical_scroll_margin": 0,
"tab_bar": {
"show": false
},
"toolbar": {
"breadcrumbs": true,
"quick_actions": false
},
}
プラグイン代替
- Zedでは、Telescopeに似た機能として、ファイルやバッファ間を移動するためにタブスイッチャー(Toggle)を使える
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space o": "tab_switcher::Toggle",
}
}
- プロジェクト全体の検索はTelescopeの代替になり、マルチバッファ表示で結果を確認しながら簡単に移動できる
- ターミナルのトグルはVSCodeに似ているが、Zedではメインの編集ビュー内にバッファとしてターミナルを開くオプションもある
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space t": "workspace::NewCenterTerminal",
}
}
- Tmuxやプロジェクト切り替え機能を完全に置き換えることはできないが、Zedのプロジェクト切り替え機能はこの作業をかなりうまくこなしてくれる
{
"context": "Workspace",
"bindings": {
"cmd-k": [
"projects::OpenRecent",
{
"create_new_window": false
}
]
}
}
Zedを使うべきか?
- Zedを試してみるか迷っているなら、数日間使ってみることを勧めたい
- Zedは独自性があり有能なテキストエディタであり、最終的に重要なのは生産性を高めてくれるツールだ
- それがVS Codeでも、JetBrainsでも、あるいはEMacsでも構わない
- 自分に最も合ったツールを選びつつ、新しいものを試すことにあまり頑なにならないでほしい
3件のコメント
Hacker Newsのコメント
当初はZedを気に入っていたが、コラボレーションやAI機能に注力する一方で、基本的なエディタとしての機能が不足し、あまり有用ではなくなった
Helixを使っている理由は、VSCodiumからVimやNeovimに移行しようとしたものの、プラグイン設定が難しかったため
最近VimからZedに移行し、Zedは多くの面で素晴らしいと思っている
Zedを使うときは、その非常に高速でクリーンなUIを楽しんでいる
6か月前にVSCodeからZedへ移行したが、最近Neovimに戻った
Zedがさらに洗練され、安定化することを期待している
Neovimディストリビューションを使ってみたか気になる
VSCodeで本物のNeovimを求めるなら、
vscode-neovimを確認してみることを勧めるKakouneとHelixに興味を持ったことから、VSCode向けのモーダル編集拡張を書いた
macOSでZedを試したとき、高速で機能豊富なエディタという印象を受けた
私も最近Helixに乗り換えました。
Hacker Newsの意見のように、既存のNeoVimではプラグインをすべて活用していなかったので、helixを試してみてすぐに乗り換えることになりました。カラーテーマは本当に衝撃的です
デフォルトのテーマが紫っぽくていまいち、という意味でしょうか? :eyes: