🐔

NeovimにClaude Codeを埋め込む

に公開

NeovimにCladue Codeを埋め込むとは?

Claude CodeはCLIのアプリケーションであり、ターミナルで動きます。Neovimに埋め込むというのは、Claude Codeが動いているターミナルをNeovim上で表示するということです。

Neovimにはウインドウが2種類あるようで、通常ウインドウとフローティングウインドウというのがあります。ウインドウはバッファを表示します。バッファはテキストとかターミナルとかがあります。

つまり、NeovimにClaude Codeを埋め込むというのは、Neovimの通常ウインドウかフローティングウインドウにターミナルのバッファを開いて、そこでClaude Codeを実行するということになります。

通常ウインドウ vs フローティングウインドウ

では、どっちのウインドウを使うとよいか、について迷いまして、よく分からないので下記リポジトリで色々実験してみました。

https://github.com/edo1z/nvim-tmux-test

結論としては、利便性重視で、今回は通常ウインドウかなと思いました。
通常ウインドウで困ることが基本なかったのと、通常ウインドウならいつものウインドウと同じなので操作的にも楽で便利でした。フローティングウインドウは見栄え的にちょっと良い感じではありますが、移動等の操作が結構不便でした。

https://x.com/edo1z/status/1940673525515538455

claude-cli.nvim

今プラグインを開発中です。今は1つのClaude Codeだけ起動できまして、通常ウインドウで画面右に表示されます。 <leader>ca でフローティングウインドウの入力フォームが出てきますので、完全なvim操作でClaude Codeへの依頼内容を作成できます。また、ファイルパス、エラー、ログなどを簡単にvimの入力フォームにコピーできます。(例えば <leader>ce でエラーが出ているファイルパス、行数、エラー内容をコピーできます)また、スニペットや依頼履歴も管理・再利用できます。依頼内容が完成したら、 Ctrl+s でClaude Codeの入力欄に送信してすぐに実行できます。

今後は複数のClaude Codeを便利に起動・管理して並行的に運用できるように出来ればと思っています。

https://github.com/edo1z/claude-cli.nvim

https://x.com/edo1z/status/1937766620107321447

他にも作ってるよ

Claude Codeさんが来てから、nvimに再引っ越しし、Claude Codeさんに設定をやってもらいながら便利さにテンションが上がり、プラグインを作りだしました。上記のclaude-cli以外で、Gitのステータスや履歴みるやつとか、テスト用の環境作ってみたりとか、あとは開発サーバを一括起動してログ見られるやつとか作っています。結局一からLuaとNeovim APIの使い方を一応軽く勉強して、ウインドウとかバッファの仕組みとかもちょっと分かってよかったけど沼って時間がちょっと溶けました。まあでも、自分専用の開発環境をすぐ自作できるのは面白いです!

https://github.com/edo1z/gitview.nvim

https://github.com/edo1z/nvim-plugin-sandbox

https://x.com/i/status/1940591524284436700

Discussion