Helix Editorで作業速度を上げよう

Helix

はじめに

こんにちは。レコチョクでバックエンドエンジニアをしている小河です。
Vimのようなエディタに馴染みがないというような方に向けてVimライクなエディタであるHelix Editor(以降Helix)を紹介します。

具体的に以下の方向けの記事です。

  • リモートホストを使う時に止むを得ずVimを使う程度だが、こういうエディタを使えた方がなんだかんだ良いんだろうなと思う方
  • ショートカットを覚えてコーディングの速度を上げたいが、どうにも面倒でショートカットが覚えられない方
  • Vimを覚えようとしたが、コマンドを覚えるのが難しくて挫折した方

本記事はHelixのバージョン25.07.1に準拠しています。

要約

  • Vimライクなエディタを使うことにより操作速度を向上できるし、その習慣を強制的に身につけさせられる
  • HelixはVimと比べて…
    • 操作体系に合理性があり操作ガイドもあるため、コマンドを覚えやすい
    • LSPが標準搭載されており、楽に開発をスタートさせられる
    • 拡張機能システムが未実装であることもあり、足りない機能もいくつか存在する

Helixとは

KakouneNeovimに影響を受けたCLIベースのエディタです。
つまるところ新しいVimライクなエディタだということです。

そもそもなぜVimライクなエディタを使う必要があるのか

操作速度が速いから

周知の事実ではあるのですが、ホームポジションからあまり手を動かさずにあらゆる操作をすることができます。
これにより作業速度が上がります。
Vimにおいてカーソルを動かす時、方向キーを使わずにhjklキーを使うことはよく知られているかと思います。

エディタに対して熟達せざるを得ないから

普段VSCodeのようなGUIベースのエディタを使っていると、熟達することに対して甘えが生まれます。
例えば、VSCodeにおいて関数の定義へ移動したければ F12を押せば良いのですが、そのショートカットを覚えていなければマウスを使ってしまいます。
その後も人は適当な理由をつけてショートカットを覚えません。

しかし、Vimライクなエディタはそのような甘えを許しません。
今回紹介するHelixで関数の定義へ移動したければ gdです。マウスを使う方法はありません。
したがって、わからない操作があればその場でコマンドを調べるしかありません。
この繰り返しによって強制的にエディタに熟達させられます。

また、当然ながらエディタに熟達することは重要です。

エディターに熟達するというのはなぜ重要なのでしょうか?
(中略)
真のメリットは、エディターに熟達することで、編集の方法を意識しなくても済むようになることです。
頭の中で何かを考えることと、エディターのバッファー上に何かを表示させることには隔たりがあります。
頭の中の思考を澱みなく流れるようにすれば、プログラミングにメリットがもたらされます
引用元: Andrew Hunt (著), David Thomas (著), 村上雅章 (翻訳), 達人プログラマー(第2版): 熟達に向けたあなたの旅, 2020

特定のAIエディタから解放されつつあるから

少し前にCursorWindsurfといったエディタが流行っていた頃を考えると、AIを活用するために特定のエディタに縛り付けられていたとも言えます。
2025/08現在、Claude CodeをはじめとするCLIベースのAIエージェントツールが台頭してきています。
CLIベースのAIエージェントツールは任意のエディタ(IDE)と組み合わせて使えるので、Vimライクなエディタを使ってもAIの恩恵にあずかることができます。

なぜHelixか

Vim/NeoVimの方が拡張機能により機能が豊富で、その点で優位性があります。
ただ、こういったエディタに熟達していない方であればHelixの方がおすすめです。

操作体系が合理的で覚えやすいから

Vimの操作体系は合理的ではない部分があります。
(歴史的な経緯も関係しているので仕方ない部分があります)

Undo(戻る)をしたい時、Vimでは uを使います。Undoだからです。
では進むはRedoなので rでしょうか?いえ、 Ctrl + rです。

行を丸ごと削除したいときは、Vimでは ddを使います。Deleteのdなのでなるほどなと思います。
では、 xを押すと何が起こるでしょうか?カーソルを合わせている一文字が削除されます。あの、 xってなんですか?

一方でHelixだといくらか合理的になります。
先ほど挙げた例に関してVimとの比較表がこちらです。
ものすごく直感的ではないにしろ、覚えやすくはあると思います。

操作内容 Vim Helix 補足
戻る(Undo) u u
進む(Redo) Ctrl+r U 戻る進むがuキーに揃えられているのは覚えやすいはず
一行削除 dd xd “xd”はxで行全体を選択し、dで選択範囲を削除するという意味合い
一文字削除 x d Helixでは削除は一貫してdで行う

操作におけるガイドが出るから

先ほど操作体系が合理的で覚えやすいという話はしたのですが、それでもなお多くのコマンドを覚える必要があるのは変わりありません。
しかし、Helixはどのキーを押せばどの操作が行われるかを表示してくれる仕組みがあるため、ある程度は問題が緩和されます。

Helixではどこかにジャンプしたい場合、一貫して gを使います。
その gキーを押した時に、その後どのキーを押せば何が起こるのかを表示してくれます。
image-20250826061859442.png

Spaceキーを押すとこうなります。
image-20250826061121074.png

最初からLSP(Language Server Protocol)が標準搭載されているから

LSPクライアントが組み込み済みです。
言語ごとのLSPサーバーを導入できていれば、それだけで補完や定義へのジャンプなどがすぐに利用できます。

LSPサーバーが導入されているかどうかは $ hx --health {言語名}で確認できます。
例えばGoで試してみると、 goplsというLSPサーバーが導入されていることがわかります。
(導入されていなければ別途導入します)

その上でGoのソースコードを開いて中身をいじってみるとエラーも出してくれますし、補完もしてくれることが分かります。
image-20250826061355668.png

関数の上で grを押せば参照元をリストアップすることもできます。
image-20250826061146857.png

なんとなく、使えそうだなという感じがしてきませんか?

Vim(Neovim)で同じことをしようとすると拡張機能の導入が必要となり、さらに学習コストが嵩んでしまいます。
Helixはあまり考えなくとも「Helix自体を導入する + LSPサーバーを導入する」でひとまず開発をスタートさせることができます。

軽いから

以下の要因もあって軽いです。

  • Rust製
  • 必要な機能が最初から入っており最適化されている
    • NeoVimの場合は拡張機能を追加することによって必要な機能を補うが、そのせいでIDE並に重くなりがち

Helixの良くないところ

当然ながら良くないところもあります。
これから挙げる点は拡張機能を導入したNeoVimであればいずれも解消できる内容なので、NeoVimと比べて明確に劣る内容となります。

拡張機能システムが存在しない

現時点では拡張機能を使うことができません。
キーマップなどは変更できますが、それ以外のHelixの機能に不満があっても変えることが難しいです。

以下のPRで拡張機能システムを開発中で、見たところ開発も終盤に差し掛かっていそうです。
Add Steel as an optional plugin system #8675
とはいえHelixのリリースの頻度は半年に一回ほどなので時間を要すると思われます。

AIコード補完ツールの導入にハードルが存在する

GitHub Copilotに代表されるようなAIコード補完ツールへの対応にHelixはかなり消極的です。

(Copilotへのサポートを予定しているかという質問に対して)
It’s unlikely to be accepted as a feature to core until there is a a widely-adopted specification designed for editors.
To my knowledge, such a standard has yet to be attempted.
訳: エディター向けに設計された広く採用されている仕様が確立されるまでは、コア機能として受け入れられる可能性は低いでしょう。
私の知る限り、そのような標準はまだ試みられていません。
引用元: What about Copilot support? #4037

ただ、LSPの仕組みを使ってAIコード補完を行うhelix-gptが存在するのでこちらを導入するのが良さそうですが、設定や導入手順が若干複雑なので一定のハードルが存在します。
先述の拡張機能システムが整備されればAIコード補完のためのプラグインが開発され、導入も楽になるかと思います。

※ この話はあくまでAIコード補完ツールの話であって、CLIベースのAIエージェントツール(Claude Codeなど)は問題なく利用することができます。

最低限のデバッグ機能しかない

Helixにはデバッグ機能は備わっていますが、VSCodeやその他のIDEで想像されるようなリッチな見た目のデバッグ機能は提供していません。
以下のPRでVSCodeのような見た目のデバッガが開発中ですが、開発が止まっているようにも見えるため、のんびり構えた方が良いでしょう。
Debugging overhaul and redesign #5950

デバッグについてのみ、VSCodeやその他のIDEを使うといった選択肢も考えた方が良さそうです。

ファイルツリーがない

VSCodeやその他のIDEでは画面左にファイルツリーが据えられていることがほとんどかと思います。この仕組みがHelixにはありません。
個人的にはデメリットではないとは捉えていますが、マイナスに捉える方も多いかと思うので挙げています。

Helixではファイルツリーの代わりに Space + fで開けるFile Pickerを使うのが良さそうです。
いわゆる「あいまい検索」(fuzzy finder)でファイルを検索することができます。
開発を進めるうちにファイル名を覚えてくるので、わざわざファイルツリーを使わなくても良いという寸法です。
image-20250826061718232.png

ディレクトリ構造を知りたいだけであれば Space + eで開けるFile Explorerを使うこともできます。
ただし、画面左に常駐してくれることはありませんし、ただディレクトリ構造を眺めてファイルを選択して開くだけの機能に留まっています。
image-20250826061726647.png

どうしてもファイルツリーが欲しい場合はyaziなどのCLIで動くファイルマネージャーと
tmuxZellijといったターミナルマルチプレクサを組み合わせることで実現可能です。

ターミナルマルチプレクサで画面を縦に二分割し、左にファイルマネージャー、右にHelixを据えます。
image-20250826061219584.png

導入方法

こちらに記載があります。
https://docs.helix-editor.com/package-managers.html

導入できた後は $ hx --tutorでチュートリアルが開くので、それに沿って操作方法を学習することができます。

さいごに

Helixは発展途上なエディタではありますが、開発作業に十分使える機能が揃ってきています。
Helixを使ってマウスの使用頻度を減らしていきましょう。

Helix