通常、tmuxでnew-windowをするとtmux起動時のディレクトリでウィンドウが開かれてしまうので、 なんとか出来ないかと思いつつ放置していた。
公式サイトのFAQを探っていたら、 解決方法が載っていたので、さっそく設定してみる。
tmuxのウィンドウには固有の環境変数があり、tmux set-env name [value]で設定出来るみたい、
これを使って各ウィンドウごとのカレントディレクトリをcd毎に設定していく。
また、各ウィンドウのIDはtmux display -p '#I'で獲得出来る。
サンプルコードではプロンプトに設定コードを埋め込んでいる。
PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\h$ '
僕の環境はzshなので、chpwd関数に挿入した。
ディレクトリが変わるごとに環境変数のTMUXPWD_xにカレントディレクトリを変更していく。
# .zshrc
function chpwd(){
[ -n $TMUX ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD
}
後は以下のコードを.tmux.confに設定する。
bind-key C-c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec $SHELL"'
これで目的の挙動になった。