世界を動かす技術を、日本語で。

Helix Editor 25.07

概要

  • Helix 25.07 の主な新機能と改善点の紹介
  • Tree-house によるTree-sitter連携の刷新
  • ファイルエクスプローラー やLSPドキュメントカラーなどの新機能
  • コマンドモード の大幅な強化と柔軟なパース機能
  • インジェクション 等のシンタックスハイライトの進化

Helix 25.07リリースハイライト

  • Helix 25.07 がついにリリース、195名のコントリビューターによる貢献
  • Helix はモーダルテキストエディタ、複数選択、LSP、tree-sitter、DAP実験サポート搭載
  • 本リリースでは Tree-sitter連携のコア部分を完全刷新、新機能多数追加

新ファイルエクスプローラー

  • <space>e で新しいファイルエクスプローラー起動
  • TelescopeライクなピッカーUI、ディレクトリ階層を直感的に閲覧
  • ディレクトリ選択でその下層のエクスプローラーを新たに開く仕様
  • <space>f は従来通りディレクトリ全体を再帰的に表示
  • 大規模プロジェクトの精密なファイル操作に最適

LSP Document Colors

  • LSPのDocument Color Request に対応
  • tailwindcss-language-serverやvscode-css-language-server等から RGBカラー範囲情報 を取得
  • カラーのスウォッチを インラインで表示、型ヒントのような体験

コマンドモードの強化

  • コマンド(:)実行のパーサ・補完機能を全面刷新
  • ファイル名のスペース補完やバグ修正、 フラグ・展開 の新機能追加
  • :sort --reverse:write --no-format など、シェルライクなフラグ対応
  • 展開機能 で%{variable_name}や%sh{...}構文による値の挿入が可能
    • 例: :echo %sh{git blame -L %{cursor_line},+1 %{buffer_name}}で現在行のgit blameをステータスラインに表示
  • コマンドごとの複雑な構文や補完も柔軟に対応

柔軟なパース・拡張性

  • コマンドラインのパース手法を動的に切り替え可能
  • :set-optionや:toggle-optionは serde_jsonのストリーミングデシリアライザ で複雑な設定値も扱える
  • :run-shell-commandや:pipeはコマンド名以降のパースを行わず、シェルの規則に素直に従う設計

Tree-houseとTree-sitter刷新

Tree-sitterとは

  • Tree-sitter は高速・エラー耐性の高いパーサ生成フレームワーク
  • grammar.jsで文法定義、CLIでパーサ生成・テスト
  • エディタやLSP、Difftastic等のツールが 構文木 を活用
  • Query 機能で部分木のパターンマッチ・ノードキャプチャが可能
    • Helixでは ハイライト・インデント・テキストオブジェクト 等に活用

HelixのTree-sitter利用歴史

  • 初期から tree-sitter公式Rustバインディング を利用
  • tree-sitter-highlight でハイライト処理、だが 非インクリメンタル で非効率
  • Helix独自のハイライター(tree-sitter-highlightのフォーク)を育成したが、保守困難に

Tree-houseの登場

  • 新ハイライトクレートTree-house をゼロから実装
  • パースとクエリ処理の分離、インジェクション判定の最適化
  • IteratorベースのAPIを廃止、小さな構成要素で保守性向上
  • 長年のバグ修正、将来の並列パース等の拡張性確保

インジェクション(Injection)機能の進化

  • injections.scm による多重言語埋め込み(例: Markdown内のRustコード)
  • docコメント内Markdown→コードフェンス内Rust 等、複雑な多層インジェクション対応
  • Tree-house内部で階層をツリー構造で管理、各層ごとに構文木をパース
  • インクリメンタルインジェクション で変更箇所のみ再パース・再クエリ実行
    • 大規模Markdownリスト等でのパフォーマンス向上

まとめ

  • Helix 25.07 はエディタ基盤の刷新と多彩な新機能で大幅進化
  • Tree-house によるシンタックス処理の抜本的強化
  • コマンドモードの柔軟性・拡張性、LSP連携の表現力向上
  • 今後の開発・拡張にも大きな布石

Hackerたちの意見

Helix大好き!おめでとう!見た目もいいデフォルトテーマだし、設定も sensible だね。インストールしてすぐ使えるから、特に設定はいらない。まだIDEをHelixに変えたわけじゃないけど、viのエイリアスを設定して、クイックCLI編集用に$EDITORにしたよ。だから、k9sでクイックデバッグの編集が必要なときは、Helixが呼ばれるんだ。

Helixが大好きで、vimに乗り切れなかった人にはめっちゃおすすめ!学ぶのも使うのもずっと簡単だったし、他のvimライクなエディタとは違って、使える初期設定があるのがいいよね。

本当に本当に好きだよ。正直、マウスベースのファイルブラウザみたいな便利なものをGUIで包んだ方がいいと思う。そうすればVSCodeと競争できると思う。

すごく能力があるテキストエディタが見られて嬉しいけど、無駄なAI機能を詰め込んでないのもいいね。

minimal https://github.com/helix-editor/helix/issues/6187

Helixを好きになりたかったし、ほとんどは好きだったけど、アンドゥの動作がなんかすごく変に感じるんだ。アンドゥしたい内容が必ずしも論理的じゃなくて、いつもやりすぎちゃう。過去にこれで作業を失ったこともあるんだよね。

アンドゥが時々変だってのには同意するし、「最後のコマンドを繰り返す」もそうだね。でも、他の部分がすごく良いから、Helixをメインエディタにしてるよ。どうやって作業を失ったの?やり直しできなかったの?

アンドゥについて気になることが2つあるんだ。* アンドゥを押すと、アンドゥする内容が画面にないとき、関連するセクションに画面がジャンプするのはいいけど、その同じキーで実際に内容をアンドゥしちゃうのは悪い。別のエディタでは、内容が画面にないときはアンドゥアクションを実行しないんだ。Helixでアンドゥを押すと、何が実際に変わったのかを考えるのに時間がかかる。* これはHelixの開発者の意図的な決定だから、変わることはないだろうけど、アンドゥが細かくないのも気になる。挿入モードごとにチャンクされてるから、挿入モードで「二都物語」を全部タイプして、30分間挿入モードにいた後、通常モードに戻ると、アンドゥを一回押すだけで挿入モードでやったことが全部アンドゥされちゃう。アンドゥのためにエディタにセーブポイントを明示的に指定する機能があって、アンドゥしたいポイントで手動でキーを押すことが求められるんだ。これが本当に嫌なんだよね。スペースバーをこのセーブポイントにバインドして、もっと細かいアンドゥができるようにしてるけど、現在の選択をクリアしちゃうとか、いくつかの影響が出るんだ。残念ながら、副作用なしにこれを修正する方法がわからなかった。Helixが大好きで、エディタを変えるつもりはないけど、デフォルトの動作には本当に驚くべきものがあって、アンドゥの細かさとアンドゥのために手動でチェックポイントを保存することが求められるのはその一つだね。

Helixは素晴らしくて、初めからたくさんの機能(ファイルピッカー、構文ハイライト、リンティングなど)があって、設定やプラグインのインストールも不要なんだ(vimやneovimとは違って)。絶対に使いたいけど、主な欠点は一部のキー操作がvimと違うこと。キー操作がvimより良いかもしれないけど、何年もvimを使ってきたから、通常モードで「x」を押すとカーソルの下の文字が削除されるとか、「d」で動作を待ってから削除することを期待しちゃうんだ。これが起こらないと混乱してイライラしちゃう。vimを使ってる人にはこれが問題になると思う。特にvimの普及度から逃げられないから、習慣を変えるのはすごく難しい。ありがたいことに、いい人たちがevil-helixをリリースしてくれた。Helixのソフトフォークで、Vimのキー操作を導入してるんだ。https://github.com/usagi-flow/evil-helix ; 試してみたけど、すごく良かったから、同じ問題を抱えてる人には絶対におすすめするよ。最後に、Helix(とevil-helix)はWindows(cmd)でも問題なく動くよ。Rustをインストールする必要もないし、.exeを手に入れればすぐに使えるよ。

僕にとっての問題は、新しいことを学ぶのが嫌だってことじゃないんだ。どこでもこのキー操作が使えないのが問題なんだ。ほとんどのオンラインエディタやワークステーションには何らかのvimのキー操作があるから、LinuxマシンにSSHで入るとvimエディタがあるって信頼できるんだ。qwertyキーボードみたいなもので、もっと良いレイアウトがあるのはわかってるけど、ほとんどのマシンで99%の生産性をほぼ瞬時に発揮できる柔軟性を捨てられないんだよね。

Vim(その後Neovim)を20年近く使ってきた私には、Helixに適応するのは難しくなかったし、今ではHelixの方が圧倒的に好きだよ。いくつかのモーダル動作を編集したけど、Helixのロジックには常に従ってる。複数選択やLSPサポートが標準でついてるのはすごく価値があるし、マルチステップのキャラクターを押すと次の選択肢のヒントが表示されるのも素晴らしい。たまに素のVimを使う必要があるけど、いくつかのコマンドは頭の中でリマップされてるけど、クイック編集にはまだ十分覚えてるよ。

おお、VimのキーバインディングがHelixを試す上での唯一の障害だ。HelixにVimサポートを追加することは可能だけど、彼らはそれを望んでないの?

同じく。

新しいツールを(再)学ぶのは全然平気なんだけど、Helixをしっかり試してみたら名詞-動詞モデルが逆に悪いと感じた。視覚的なフィードバックは楽しいけど、特にコードを読んでるときは気が散る。これのおかげで、Vimのように簡単に編集を繰り返すことができなくなるんだ。Helixのモデルには状態を持つという特性があって、Vimでは編集してるときにファイル内の「今いる場所」だけ気にすればよかったのに、Helixでは「過去にいた場所」も気にしなきゃいけないから、現在選択しているものに影響するんだ。詳しくは他のコメントを見てね。OOTBの設定と、(たぶんVimの)モーダル編集のパラダイムを持ったエディタが欲しい。視覚的にすべての編集アクションを同期させるように作られてないやつね。そういうのは、編集言語の良さを手放すことになるから、あんまり良くない。スピードの問題じゃなくて、もっと面白いプログラミングタスクに考えるためのメンタルリソースを解放することが大事なんだ。もっと注意を必要とするエディタは、逆に良くない仕事をしてると思う。

おめでとう!Helixのことは嬉しいけど、私には合わないと思う。Neovimを使ってるんだけど、やりたいことはできるし、選択肢の中では一番いいと思ってる。でも、完全には満足してないんだ。私が求めてるエディタの条件は以下の通り:

  • モダンなコードベース。ゼロから書かれていること。
  • VIMキーバインディング:Vimの筋肉記憶があるから、エディタでもVimのキーバインディングを使いたい。他のキーバインディングは使いたくない、たとえそれがより良いとされていても。Vimのように歩き、Vimのように鳴く必要がある。
  • 良いデフォルト設定。設定をたくさんするのが嫌いだから。Neovimは設定が多くて、良いデフォルトを提供しないこともある。Helixはこれをうまくやってるかもしれない。
  • Treesitterベース。Zedや最新のNeovimのように、WASMランタイムでWASMとしてTreesitterパーサーを動かすのがいい。
  • 拡張システム。ただ、lua、js、schemeはあんまり好きじゃない。私の好みじゃないんだ。必要な機能だけを公開したWASMモジュールにして、プラグインの設定はチューリング完全でない設定言語でやってほしい。
  • TUIとオプションのGUI
  • LSP、DAP、スニペットのサポートが内蔵(オートコンプリート/提案、テストとデバッグ用のUI付き)
  • Oil.nvimのようなFSをバッファに内蔵
  • Telescope/FZF-luaスタイルの検索が内蔵
  • Git統合が内蔵(magit/neogitのようなGIT UIがあれば嬉しい)
  • Flash.nvimスタイルのTreesitterベースのコードAST操作とラベルによるジャンプが内蔵
  • マクロとマルチカーソル
  • オプションのカーソルスタイルAI統合(チャットUI)

Helixがどれを満たしてないのか、私にはあまり明確じゃない。私から見ると、Helixはあなたが探してるものにかなり近いように見える。

Vimの筋肉記憶があるんだ。他の人の好みは尊重するけど、ほとんどの人が筋肉記憶にこだわりすぎてると思う。キャリアの中で何度もOSやエディタ、IDEを切り替えてきたけど、最初の1、2日は「これ最悪だ、全然タイピングできない、マジでコンピュータ燃やして農家になりたい」って思うんだよね。でも…それもすぐに慣れる。数日後には新しい筋肉記憶ができて、全然大丈夫になる。数日間の不快感でどのソフトを使うか決めるのはもったいないよ。ソフトの機能はキーの割り当てだけじゃなくて、もっと幅広いからね。

へぇ。「ポストモダン」なエディタだね。Fishの「90年代のためのコマンドラインシェル、ついに登場」というジョーク以来の二番目に面白いジョークだ。動画を見る限り、TUIベースみたいだね。いい感じ。EmacsのTUIの雰囲気を感じたよ。

現在の行のgit blameの例が大好きだ。Helixは私の日常的なエディタで、lazygitと一緒に使ってるけど、HelixにもっとGitの統合があれば嬉しい。ある同僚がEmacsのmagitで何ができるか見せてくれたけど、それは次元が違うものだった(例えば、バッファをファイルのGit履歴を通して循環させるとか)。以前はNeovimを使ってたけど、Helixに切り替えて本当に満足してる。設定がずっと少なくて、キーバインディングも直感的で、マルチカーソル編集もできる。エージェント的なコーディングにはAiderやOpenCodeを検討してる。そういうツールがHelixとlazygitのターミナルセットアップに加わることを期待してる。

Helixに「Kakouneモード」を実装してほしいな。仕事ではWindowsで開発してるけど、Kakouneはあんまり理想的じゃないから、Helixは完璧なフィットになると思う。ただ、キーの割り当てがどうしても気になっちゃう。Helixのキー割り当ての哲学は、Kakouneの簡潔さとは逆に冗長さを促すから、ちょっとイラッとする。今のところ、KakouneをうまくエミュレートするにはHelixのキー設定がまだ力不足な気がする。Vimの不安定なキー割り当てや挙動が、Kakouneに移った理由なんだ。Kakouneはもっと一貫性があってエレガントな割り当てと挙動があるからね。Helixはその点で後退してる感じがする。

ファイルエクスプローラーは本当に欲しい機能なんだ。でも、netrwみたいに素早く作成したり、名前を変えたり、削除したりできるようにしたい。netrwをこんな風に使ってるからね。