ssh接続しているときはtmuxのウィンドウ名が接続先になっているとわかりやすそうだったので、雑なfunctionを書いた。
以下のfunctionをzshが読める設定ファイルに記載すればOK。僕は.zshenv
に書いてます。
sshから戻ると、ウィンドウ名はもちろん元に戻ります。
function ssh() {
if [[ -n $(printenv TMUX) ]]
then
local window_name=$(tmux display -p '#{window_name}')
tmux rename-window -- "$@[-1]" # zsh specified
# tmux rename-window -- "${!#}" # for bash
command ssh $@
tmux rename-window $window_name
else
command ssh $@
fi
}
ssh
でコマンドを実行するだけのケースの場合e.g.) ssh bar@example ls -l
、最後の-l
をウィンドウ名に設定しちゃうけど、その場合はインタラクティブシェルじゃないからまあよしとする。
参考
- http://qiita.com/catatsuy/items/631d1d5d0b357082ba74
- http://qiita.com/yuku_t/items/4ffaa516914e7426419a
説明
ssh_config
に設定を書くのは避けたいなと思いました。以下、その理由。
-
ssh_config
に書く場合は、Host *
に書けないので記述が重複する - 2番目のリンクのケースでは
ssh_config
とzsh
のconfigで設定が分散する
sshのLocalCommand
なら、%n
で接続先ホスト名とれるから便利なんだけどね。