0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code × herdr で「ファイル開いて」と言うだけで隣のペインにCUIエディタを開かせる

0
Posted at

やりたいこと

Claude Codeで作業中に、生成・編集したファイルを「そのファイル開いて」と言うだけで、隣のペインにCUIエディタ(nvim等)で開いてほしい。

筆者は普段nvimで開発しているが、Claude Codeとの会話中にファイルを確認したいとき、毎回ファイルパスをコピーしてペイン分割してnvimを起動して……という手順が面倒だった。会話の流れのまま「開いて」の一言で済ませたい。

herdr とは

herdr は、AIコーディングエージェント時代に向けて設計されたターミナルワークスペースマネージャ。tmuxのようにペイン分割やセッション管理ができるが、CLIからペインを操作するAPIを備えているのが特徴。

今回のように外部プログラム(Claude Code)から herdr pane splitherdr pane run を呼び出してペインを制御できるため、AIエージェントとの連携に適している。

環境

  • ターミナルワークスペースマネージャ: herdr
  • エディタ: nvim
  • AI: Claude Code (CLI)
  • jq(シェル関数内でJSONパースに使用)

まずは開くだけなら

Claude Codeのrulesに以下を書けば、herdrのコマンド2つで実現できる。

## ファイルを開く

ユーザーが「開いて」「ファイルを開いて」等の指示をした場合、以下の手順で対象ファイルを開く。

1. `herdr pane split --current --direction right` でペイン分割(レスポンスのpane_idを取得)
2. `herdr pane run <pane_id> nvim <file_path>` で新ペインにnvimを起動

これだけで動作はするが、Claude CodeはBashコマンド実行のたびにユーザーに承認を求める。つまり「開いて」と言うたびに2回の承認が必要になる。これでは手間が減っていない。

承認なしでスムーズに動かすために、以下の3ステップで設定を行う。

設定手順

1. シェル関数を用意する

2つのコマンドを1つのシェル関数にまとめる。こうすることでpermissionのallowパターンを1つ書くだけで済む。.zshrc.bashrcで定義する。

function herdr-open-nvim() {
  if [ $# -eq 0 ]; then
    echo "Usage: herdr-open-nvim <file_path>"
    return 1
  fi
  local pane_id=$(herdr pane split --current --direction right 2>/dev/null | jq -r '.result.pane.pane_id')
  if [ -z "$pane_id" ]; then
    echo "Failed to split pane"
    return 1
  fi
  herdr pane run "$pane_id" nvim "$1"
}

やっていること:

  1. herdr pane split --current --direction right で現在のペインを右方向に分割
  2. レスポンスのJSONから新しいペインのIDを取得
  3. herdr pane run <pane_id> nvim <file> で新ペインにnvimを起動

2. Claude Codeのrulesに行動パターンを定義する

rulesに書くことで、Claude Codeは「開いて」系の指示を受けたときにこのコマンドを使うべきだと理解する。

~/.claude/rules/open_file.md(パスは各自のrules配置場所に合わせる):

## ファイルを開く

ユーザーが「開いて」「ファイルを開いて」等の指示をした場合、`herdr-open-nvim` コマンドで対象ファイルを開く。

\```bash
herdr-open-nvim <file_path>
\```

3. permissionで承認なしに実行できるようにする

~/.claude/settings.jsonpermissions.allow に追加:

{
  "permissions": {
    "allow": [
      "Bash(herdr-open-nvim *)"
    ]
  }
}

Claude CodeはBashコマンド実行時にデフォルトでユーザー承認を求める。毎回「許可しますか?」と聞かれるのは煩わしいので、このコマンドは事前許可しておく。

使い方

Claude Codeとの会話で:

あなた: このファイル開いて
Claude: (右にペイン分割してnvimで開く)

ファイルパスが文脈から明らかなら指定不要。Claude Codeが直前に触ったファイルを開いてくれる。

rulesとpermissionの使い分け

Claude Codeには行動を制御する仕組みがいくつかある。今回使った2つの整理:

rules permission
役割 何をすべきか 何を許可するか
置き場所 ~/.claude/rules/ やプロジェクトの .claude/CLAUDE.md ~/.claude/settings.json
効果 毎回必ず読み込まれる ツール呼び出し時に承認をスキップ

rulesで「やり方」を教え、permissionで「承認不要」にする。セットで使うことでスムーズに動作する。

まとめ

  • herdrのpane APIを使えば、Claude Codeからターミナル操作が可能
  • シェル関数にまとめてrules + permissionで設定すれば、自然言語で操作できる
  • 同じ手法で「ブラウザで開いて」「ログをtailして」なども実現できる
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?