🤖

NeovimでClaude Codeを使いたくてプラグインを作ってみた話

に公開

こんにちは、しぶちゃりです

NeovimとClaude Code

最近はClaude Codeを用いた開発が楽しく色々なツールを書かせています。
ただ使う頻度が高まると、普段Neovimでコーディングをしているため、わざわざvimから出たり画面を分割してClaude Codeを開くのがだいぶ煩わしくなってきました。

特に、git worktreeを使った並行開発をしているときには、下記の不満がありました。

  • 作成したworktreeを切り替えるために対応するworktree用のタブを作成する、またはtmux/ghosttyなどのペイン分割を利用する必要がある
  • 上記のためにわざわざcdしたり画面が小さくなっていくのが嫌だ
  • 今どのworktreeにいるかを把握する工夫をする必要がある

git worktree管理やClaude CodeのためにNeovimプラグインはすでにありましたが、絶妙に求めているものが違かったり、そもそもgit worktreeとClaude Codeを統合しているものが存在しませんでした。

前までなら時間もないしなで諦めていましたがこのVibe Coding時代、自分が欲しいものは自分で作りやすくなったので作ることにしました。ありがたいですね。
僕が求めていた機能は以下の機能です。

  • worktreeを作成、移動、削除ができる
  • それぞれのworktreeごとにClaude Codeのセッションを維持できる(バックグラウンドでも動かせる)
  • それぞれのClaude Codeがユーザーの応答待ちなのか実行中なのかといった状態をほぼリアルタイムで確認できる
  • Claudeと打ってもClaude Codeが出せる

claude-code.nvim

これらの機能要件を満たして作成したものがclaude-code.nvimというプラグインです。

正直、自分の困りごとを解決するために作ったものなので、同じような悩みを持っている方がいるかは分からないのですが、もしかしたらお役に立てるかもしれません。

GitHubのリポジトリに載せているものと同じですが以下のキャプチャがわかりやすいと思います。

使い方

インストールはlazy.nvimの場合こんな感じです:

  {
    "sivchari/claude-code.nvim",
    config = function()
      require("claude-code").setup()
    end
  }

基本的な操作:

  • <leader>cc - Claude CLIを起動/終了
  • <leader>cl - 全Claudeセッションの状態を表示
  • <leader>cm - リアルタイムセッション監視画面を開く
  • <leader>cw - worktree切り替え

セッション監視画面

<leader>cmを押すと、こんな感じの画面が表示されます:

┌─ Claude Sessions ─┐
│ ● feature-1 │ ← Claude実行中
│ ◑ feature-2 │ ← 入力待ち
│ ◐ main │ ← ターミナル準備完了
│ ○ hotfix │ ← セッションなし
│ ●* dev │ ← 実行中&現在表示中
└─────────────────┘

2秒間隔で自動更新されるので、各worktreeのClaude状態が一目で分かります。

まとめ

もしNeovimとClaude Codeを使われている方がいらっしゃいましたら、よろしければ試してみてください!スターやコメントをいただけると励みになります!

https://github.com/sivchari/claude-code.nvim

作成したばかりのためバグがあるかもしれません。

何かお気づきの点や改善提案があれば、GitHubのIssueやこちらのコメントで教えていただけると嬉しいです。

それでは、最後まで読んでいただきありがとうございました!

Discussion