それでも私がVim(Neovim)を使えない理由
はじめに
こんにちは、たくみです。
気づけば大学生も終わり、新入社員として社会にもまれています。
とは言いつつ、長期インターンシップとして参加していたのであまり変わっていませんが笑。
約1年前から、キーボードだけで全て完結したいためにVimを使うようになりました。
とは言ってもVimのハードルはとても高いので、VSCodeの拡張機能のVSCode Vimを使用していました。
そして数ヶ月前、VSCodeが重たい問題やこれそもそもVim使えばいいやんという理由から、VSCode Vimから普通のVimへと移行すると決めました。
それと同時に、プラグインの数が豊富で設定をluaで見やすくかけるという利点からNeovimへと移行していきました。
さて、移行すると決めたはいいものの、様々な問題が立ちはだかります。
実際、これらの問題のせいで一部VSCodeを使用して開発を行っています。
このブログではこれらの問題をまとめていきます。
「こうすれば解決できるよ!」という知見をお持ちのVim先輩の皆さん、ぜひアドバイスをいただけると嬉しいです。
問題点
現在、私が感じている問題点は以下の5つです。
- LazyGitが自分に合わない
- toggle-termが自分に合わない
- Claude Codeが使いづらい
- 開発環境(DevContainerなど)を立ち上げにくい
- 脳内の情報処理が追いつかない(疲れる)
これらを深掘りしていきます。
LazyGitが自分に合わない
普段はVSCodeで開発を行っていたため、GitはVSCode拡張機能でGUI上から操作していました。
LazyGitというTUI上でGitを操作できるツールがあり、これを使用することでNeovim上からGitを操作することができます。
しかし、コンフリクト時のマージやブランチの移動、スタッシュの操作性などがVSCode拡張機能の方が優れており、Git操作する場合はVSCode上から行うというよくわからない状況です。
あと、gitの差分を見ながら内容を修正できておらず、毎回調べています。
そもそもgitの操作を覚えろって感じなんですけどね笑。
toggle-termが自分に合わない
さて、開発においてターミナルは必須です。
サーバーを立ち上げたりdockerをビルドしたりなど、多くの場面で使用します。
Neovimにはtoggle-termというプラグインがあります。これを使用することで、ターミナルをフローティングウィンドウで表示することができます。
が、複数ターミナルの起動やターミナルの分割、移動ができていません。(できるのを知らないだけな説はあります。)
そのため、サーバーを起動しながらインフラのデプロイなどができなくなっています。
Claude Codeが使いづらい
Claude CodeをNeovimで使おうとすると使いづらくないですか...?
Neovim用のプラグインなどは、キーボードだけでのエディタとの切り替えができません。
TerminalモードからNormalモードに戻るようにはできるのですが、そもそもターミナルでそれを考えないといけないことが面倒です。
開発環境(DevContainerなど)を立ち上げにくい
これが私がVSCode脱却できない最大の理由かもしれません。
普段は再現性やローカルをきれいに保つことから、DevContainerを使用しています。
しかし、Neovimを使用する場合はDevContainerは使用できず(DevContainer CLIはありますが、ポートフォワーディングなどしてくれないです。。。)、ローカル環境で環境を構築する必要があります。
個人のプロジェクトではnixを使用しているのですが、会社でチーム開発を行っている以上、これを強制することはできません。
脳内の情報処理が追いつかない(疲れる)
これ私だけなんでしょうか。。。
Neovimを使用するとVSCodeよりも疲れるんですよね。
体感ですが、キーボードだけで完結でき生産性が高くなるのと常にいろんなキーを触っているという状況が、自分にとって情報量が多くなっているのではないかと感じます。
使い手が情報を処理しきれていないだけ + そもそもTUIに慣れていない可能性はあるので、使っていってどうかってところかもしれません。
まとめ
この記事では、私が現状Neovimへ完全移行できずにいる理由を整理してみました。
不便に感じている部分はあるものの、Neovimのサクサク動く軽快さや、キーボード駆動のロマンにはやはり惹かれるものがあります。ここで挙げた課題を一つずつクリアしていき、いつかは「完全Neovim移行達成!」という記事を書けるように戦っていきたいと思います。
もしおすすめのプラグインや、DevContainer×Neovimの良い運用方法があれば、ぜひコメントで教えてください!
Discussion
こんにちは、いろんな流派の方がいらっしゃるので、一つの例として受け取っていただきたいですが、
LazyGitが自分に合わない
Neovim同様にTUIに慣れていただくしかないと思っています。キーマップにいろんな機能が入っています。また、自分の記事の宣伝になってしまい恐縮ですが、自分がよく使う定型操作をキーマップに仕込むことのできるカスタマイズ性の高さも魅力です。もしNeovimを少キー操作+カスタマイズ性で気に入ったのなら慣れると生産性がどんどん上がるはずです。
?をタイプするとヘルプが出ます。最初はここで行いたい操作を探すのが良いと思います。ヘルプ上で/を押すと検索してコマンドを絞り込むことができます。主要な機能は公式のREADMEに大体載ってると思いますので、Lazygitで何ができるのかをこちらで眺めて知っておくと良いかもしれません。私も最初はなかなか慣れませんでしたが、いろんな機能があることを少しずつ知っていき、今では手放せなくなりました。カスタムキーマップを仕込みまくって私の設定ファイルは200行を超えてます。
Claude code/toggle-termが自分に合わない
これはいろんな解決法があると思いますが、私はこれらをNeovimから開かない、という選択をしています。理由はNeovim経由だと不具合が出やすいからで、画面分割はターミナル(マルチプレクサー)の責務だと思っています。つまりターミナルウインドウを分割して左にClaude code、右にNeovimやLazygitという使い方をしています。Claude codeからNeovimでプロンプトを編集したい場合、(私は使用していませんが)Editor modeをvimにするか、
VISUALかEDITOR環境変数にnvimを仕込むとCtrl-GでNeovimが開くようにできます。DevContainerはわかりません、すみません