codexやclaudeなど使う際、長くかかるtaskを実行させる際など条件などを含めた長文の入力が必要な場合、途中で改行を入れたかったり、中間部分を書き直したかったりするとけっこう面倒。
自分の使ってる環境でその辺を簡単にするために必要な設定や手順をメモしておく。
基本的な配置
- codexはtmux pane上でinteractive modeで起動
- vimはtmuxの同じwindowの別paneで起動
このような配置で用途毎にtmux windowを分けているので、vimのpaneからcodexのpaneへ指定文字列が送れればばOK。
paneへの文字列送信はcmd modeからこれでできる
send-keys -t <pane番号> '<文字列>'
pane番号の確認
display-panes
あとはこの文字列の部分にvim上で選択した文字列を入れるようにすれば実現できる。
これらの処理をまとめたvimのpluginがあるはずと思い簡単に探してみるとこういうのがある
https://github.com/jpalardy/vim-slime
vimからreplに対して実行したいcodeを送る目的で作られたようで目的にぴったりで、tmux以外もいろいろ対応されているだけでなく、文字列を送る際の面倒な部分(改行や特殊文字の扱いなど)も対応済みで助かる。
keymap関連の設定はこちらで解説されている
https://github.com/jpalardy/vim-slime/blob/2cfdc3b/assets/doc/advanced.md#advanced-configuration
自分の設定
https://github.com/y-kamiya/dotfiles/blob/4a624b3/vim/rc/deinlazy.toml#L660-L678
これで以下のような流れになる
- queryを書く
- 入力したい文字列を選択し
<leader>-Lで送信- 起動して最初の送信時に対象のwindow/paneを指定