fishを使っているときにtmuxのwindow nameをコマンド履歴にしたい
サマリ
fishのfish_preexecイベントをフックして、tmuxのwindow nameをコマンド履歴に変えることができる。
はじめに
tmuxを使っていると、このwindowでは一体何をしていたんだっけという状況に陥ることがままある。 そういうとき、window nameが最後に実行したコマンドだと、何をしていたか思い出すのに役立つ*1。
そんなことができるのか
以下の2つの材料から結構簡単にできちゃう。 ちなみに、"フックをかける"というのは、イベント発生時に何かコマンドが実行できるよ、って意味。
tmux rename-window <window name>
でwindowの名前が変えられる- fishには、fish_preexecという、コマンド実行前にフックをかけられるイベントがある
どうするのか
fish_preexecイベントフックは、~/.config/fish/config.fish
に書くのが作法らしい*2。
実際にはこんな感じになる。
tmuxを使っているときは、環境変数$TERMがscreenかtmuxになるので、そのときだけwindow nameを変えるコマンドを打つ。
あんまり長いコマンドを表示してもあれなので、16文字くらいで打ち止めするようにしている。
# rename tmux window function window_rename --on-event fish_preexec if test -n (echo $TERM | grep -e screen -e tmux) tmux rename-window (printf "%.16s" $argv[1]) end end
おわりに
fish_preexecイベントのおかげで、簡単にtmuxのwindow nameを動的に変えることができる。
雑感
- fishの設定ファイルは人間に読みやすいのがよい。bashとの互換性はないけど、別にどうでもいいやという感。
- fishは手入れが楽なのでありがたい