- 20年間Vimを使ってきた開発者が、Helixエディタへ移行して3か月使った体験を共有
- Helixは複雑な設定なしで**言語サーバー(LSP)**を標準サポートしている点が魅力的
- 特にVim/Neovimと比べて優れた検索機能とマルチカーソルなどが改善されており、複数ファイル内で文脈(context)を把握したり一括編集したりしやすい
- キー入力時にクイックリファレンスのポップアップが表示されるため、ショートカットを忘れずに活用できる
- Markdownリストの自動生成非対応、永続undoの欠如、週1回程度のクラッシュなどいくつか不便な点はあるものの、全体としては満足できる使用体験
- 20年間で身についたVimの筋肉記憶を学び直す過程は予想より簡単で、Vim流を無理に持ち込むのではなく**「Helix流」**を学ぶほうがはるかに効果的だった
Helixへ移行した理由
- Helixを使い始めたきっかけは、言語サーバー統合機能を手軽に利用したかったため
- Vim/Neovimでの言語サーバー設定は複雑だったが、Helixでは別途設定なしですぐに定義へジャンプやシンボル名の変更などが可能
- これまでは多数のプラグインや設定ファイルを維持する必要があったが、Helixは標準対応なので負担が減る
Helixの主な長所
- 検索システムの優秀さ
- リポジトリ全体で文字列検索をすると、結果がプレビューウィンドウに表示され、一致したファイルをスクロールしながら周辺コードも一緒に見られる
- Vimのripgrepプラグインと違って結果の文脈が豊富で、素早く判断できる
- ショートカットの即時参照機能
gキーを押すと、移動可能なコマンド一覧がヘルプポップアップで表示され、直感的
- あまり使わないショートカットも簡単に確認でき、学習コストが緩やか
VimとHelixの違い
- マーク機能は
ma、'aの代わりにCtrl+O、Ctrl+Iでカーソル移動履歴をたどる
- マクロの代わりにマルチカーソル編集を主に使う
- 文書内での一括変更作業では、
%で全選択 → sで正規表現選択 → 必要なマルチ編集を実行
- 毎回マクロを書くよりもマルチカーソルのほうがずっと便利
- タブの代わりに
space + bでバッファスイッチャーを使ってすばやく切り替えられる
Helixの不便な点
- テキストリフロー機能はVimの
gqより効果が薄い
- Markdownリスト自動生成に非対応
- リスト項目の末尾で「Enter」を押してもリストが継続されない
- 箇条書きリストには部分的な回避策があるが、番号付きリストにはない
- 永続undo機能がまだ未実装
- Vimでは
undofileを使って終了後でも変更を取り消せたが、Helixにはまだこの機能がない
- ファイル自動リロードに非対応
- ディスク上でファイルが変更された後、
:reload-all(:ra<tab>)を手動で実行する必要がある
- ときどきクラッシュする
- 週1回程度で、Markdownを多く編集することと関係している可能性がある
- 再度開けばよいので大きな問題ではない
- それでもHelixを使い続けている
移行の過程と学習体験
- 20年間で身についたVimの筋肉記憶を学び直すのは非常に難しいのではないかと心配していた
- 休暇中のサイドプロジェクトでHelixを使い始め、1〜2週間後にはもう混乱しなくなっていた
- 最初はVimに似たキーバインドを無理に持ち込もうとしたがうまくいかず、**「Helix流」**を学ぶほうがずっと簡単だった
- 今でも混乱する部分はある
- Vimの
wとHelixのwでは「単語」の定義が異なる(Helixは単語の後ろの空白を含み、Vimは含まない)
ターミナルベースの編集環境
- 長年GUI版のvim/neovimを主に使っていたため、ターミナルでエディタを使うことには少し慣れが必要だった
- 最終的に落ち着いたワークフロー
- プロジェクトごとに別々のターミナルウィンドウを使い、そのウィンドウ内のすべてのタブが同じ作業ディレクトリを持つ
- Helixのタブをターミナルウィンドウの最初のタブに配置
- 複数プロジェクトを並行して扱いやすく、以前のワークフローより良い可能性もある
設定
- Neovimの設定が数百行あったのに比べて、非常にシンプルな設定を維持
- 主な設定内容
- テーマ:
solarized_light
- 既定のyankレジスタを
+に設定してシステムクリップボードと同期
#をコメントトグルのショートカットに設定(標準のCtrl+Cが気に入らなかった)
^と$を行頭/行末へ移動するよう再マッピング(別のやり方を覚えたくなかった)
<space>lを:reflowに設定(文章を多く書くためリフローが頻繁に必要で、vimのgqショートカットが恋しかった)
- 別途
languages.toml設定ファイルで言語ごとの好みを設定
- Pythonの場合: blackフォーマッタを使用、pyright言語サーバー、自動フォーマットは無効化
結論: 3か月使ってみた印象
- 3か月はそれほど長い時間ではなく、いつかVimに戻る可能性もある
- 過去にはnixへ移行した後、8か月でHomebrewに戻った経験がある(ただし、あるサーバー管理には今でもNixOSを使っており満足している)
- Helixはまだ完成形ではないが、**「設定不要のエディタ」**という方向性が明確
- シンプルさと標準搭載機能のおかげで、長期的にはVimの代替になりうる可能性がある
- ただし継続利用するかどうかは、今後の安定性改善と機能拡張次第になりそうだ
2件のコメント
Hacker Newsの意見
長いあいだ Vim/Neovim を使ってきて、自分でカスタム設定をしたことも、既存の設定を使ったこともあるが、Vim は本当に好きだ。それでも Helix は、別途設定作業なしですぐ使える点がとても魅力的だ。
ただ、Helix の config 自体はかなり原始的だと感じるので、実のところ Vim を最初の数年使っただけでも Helix で得られる環境は再現できただろうと思う。そしてそうしていれば、もはや設定地獄はなかったと言いたい。
ヘルプポップアップが行くべきパスやキーバインドを案内してくれるのがとても良い。普段は「定義へ移動」や「参照へ移動」のような機能を頻繁には使わないので、ショートカットを忘れやすい。こうした文脈ポップアップが広く導入されるといいし、入力をためらったときだけ賢く表示されるなら本当に便利だと思う。
20年間 Vim/Neovim を使ってきたが、which-key というプラグインを入れたのはつい最近の6か月前で、とても便利に使っている。
which-key.nvim GitHub
メインの言語サーバー設定(たとえば「定義へ移動」ができる状態)をきちんと構築しようと何度も試したが、Vim や Neovim で快適な環境を作るのは難しすぎると感じた。
Vim の設定や関連依存を移す手間がなく、開発環境がずっとポータブルに感じられる(もちろん複雑な Vim 設定ほどではなく、もう少し基本的ではある)。
特にその記事で関連説明とスクリーンショットを見て、この機能を強く欲しくなった。
timeout などの条件で賢くポップアップが出るなら、必要ないときは邪魔されず、ためらったときだけ自動で案内されるので素晴らしい。
それまでは neovim と VS Code を主に使っていたが、Helix が特有の利点を埋めてくれている。
neovim を設定したり vim を使い続けたりするのが面倒で、VS Code と nvim の中間地点が必要だったが、Helix はまさにそれだ。
もし vimscript の達人だったなら考えは違ったかもしれないが、私はそうではないのでちょうどいい。
Helix には、もっとモジュール式であることや UNIX 的に振る舞うことは必要なく、今のままでいてほしい。
すでに多様なツールの Ecosystem があり、Claude Code と連携して使うこともできる(バッファのリフレッシュで新しい編集を反映)。
最高のエディタのひとつなので、毎月プロジェクトへの支援も始めた。
今後の発展として望むなら、エディタで画像や数式をレンダリングできる機能がいちばん惜しい。この点は Kitty terminal protocol や sixel のようなプラグインで実装されることを期待している。
Markdown ファイルでノートやブログ作業をするときに特に役立てたい。
Helix の健闘を祈る。
VSCode や (neo)vim は複数箇所からプラグインを取ってこないといけないので、いつも不安だった。
Lua の開発者ではないが、LLM は nvim の設定をしたり修正したりするのに大いに役立つ。
helix に来た最大のきっかけは、LSP/リンター設定がとてもよくできている点だった。
HEAD ですでにマージされた機能についていくつか共有すると —
すでに内蔵のファジーサーチベースのファイルピッカーがあるので、一般的なファイルエクスプローラーはそれほど追加のユーティリティを提供しない。
Helix 用の vim キーバインドプラグインも使ったが部分的にしか合わず、さらに失望が大きかった。
熟練した Helix ユーザーがどう解決しているのか気になる。
Vim/Neovim で快適に言語サーバーを設定するのがあまりに作業になってしまい、Helix に移ることになった。
ただ、ここ5年の Neovim には batteries included のように必要なものがそろったディストリビューションが現れ、非常に簡単に設定できるようになった。
多くの開発者がエディタのデバッグに時間を使いたくない、という点には同意する。だから JetBrains が人気なのだと思う。
ただし、20年の Neovim ユーザーが LSP 環境をまともに構築できなかったという部分は少し納得しにくく、筆者の率直な経験なのか疑わしく感じる。
結局のところ、その場合でもフル IDE を使うほうが楽で、インストールや設定にはいつもためらいがあった。
筆者の例には共感できる。
私も設定は最小限の barebones で使うほうだが難しくなく、Lua は vimscript よりずっと人間工学的だと感じる。
ALE のようなツールを使い続ける理由でもある。
Helix を使うのも幸せであるよう願っている。
他のエディタも使えはするが、ほぼすべてのデバッグや設定が vscode 中心なので、それを使うことが推奨される雰囲気がある。
Neovim+treesitter+LSP の設定も、すでに非常にスムーズにうまくいく。昔は大変だったとしても、今では大きな問題ではない。
Helix に行く動機が LSP だというのは疑問で、もしかすると筆者の不満は LSP 自体にあるのかもしれない。
noun-verb 方式の欠点のひとつは、繰り返しコマンド(
.)が使えないことだ。Vim では
dd..、dap..などの繰り返し動作が可能だが、noun-verb モデルではこれが難しい。さらに根本的にはキー数が足りなくなる問題がある。
あまりに多くの基本操作で Alt キーを使わなければならず、vim のような normal/visual/insert モードもなく、あるのは visual/insert だけだ。
motion/オブジェクトの区別も明確ではないため、キーマッピングの難易度が上がり、キー不足の問題が生じる。
実際にコードを書くときに必要な思考にも、よりよく合っている感じがする。
echasnovski が作ったプラグイン集で、さまざまなニーズ、一貫性、ドキュメントを満たしてくれる。
nvim 0.12(nightly) からは内蔵プラグインマネージャー(vim.pack)で mini.nvim と lspconfig だけ入れれば十分だ。
mini.nvim 公式サイト
mini.nvim GitHub リポジトリ
neovim をプラグインも自動補完も、さらにはシンタックスハイライトすらなしで使っている。
こうしたやり方による自己規律のほうが、より良いコードを書けるようにしてくれると感じる。
すべての人に合うわけではないだろうが、ぜひ一度試してみることを勧めたい。
コードアクションや goto definition も使わず、リアルタイムエラーが多少あるくらいだが、コンパイラが非常に速いので大した意味はない。
LSP を切ってしまいたい気持ちがある。20年前と比べて、LSP が自分のプログラミング能力を劇的に引き上げてくれたとは思えない。
シンタックスハイライトについては、派手なカラーテーマのほうがむしろ集中を乱し、意味もないと考えている。
単色あるいは2色中心のテーマを好み、変数名や関数名の色分けすら必要ないと感じる。
ただ、すべてを記憶しなければならないので疲労が蓄積しないのか、あるいはこの方法が本当により良いコードにつながるのかは疑問だ。
色はコードのミスやエラーを視覚的に見つけやすくし、コード探索も速くしてくれる、もう一段階多い情報だ。
そこまで極端にはせず、シンタックスハイライトと LSP による構文エラーのフィードバックまでは維持している。
オートコンプリートやドキュメントの自動リンクは使わない。
helix-editor.vercel.app
公式ドキュメントよりずっと見やすく、Tips/Tricks も多いので、効率的な編集方法やキーバインドなど、Helix の欠点(ターミナル内蔵がない点など)を和らげるのに役立つ。
長年の vim ユーザーなら kickstart(特にモジュール式フォークの kickstart-modular.nvim)を勧める。
kickstart.nvim
とてもミニマルな出発点として素晴らしい。
ただし規模が大きいので、私は fold marker で区間を折りたたみながら、より管理しやすくしている。
LSPやpluginの設定などが手軽なことから、時折helixに関心を持つものの、手がvi/vimに慣れすぎていて簡単ではありません。