こんにちはこんにちは
私は日々大量のサーバーで作業をする必要があるので tmux が欠かせません
そんな中最高便利な記事が先日公開されました
Tmuxでウィンドウをインタラクティブに移動する - Qiita [キータ]
しかしこの記事が全く話題になっていません
おそらく理解されていないのだと思います
ということで私がもう少し詳しく説明したいと思います
先程の記事と同様に
の合計 3 記事を組み合わせて初めて達成できる最高のソリューションを紹介します
tmux のウィンドウの名前
tmux で大量のウィンドウを立ち上げて ssh しているとどのウィンドウがどこのホストにいるのか分からなくなります
そこで先程紹介した 2 記事です
例えばサーバーが a0, a1, b0, c0 のようにアルファベット一文字+数字 1 桁のような命名規則であった場合は .ssh/config
を以下のようにします
Host a? b? c?
PermitLocalCommand yes
LocalCommand tmux rename-window %n
このようにすると ssh した際に tmux のウィンドウの名前がサーバーのホスト名に変わります
Host *
のようにすると git pull
など全く関係ないところで動くのでパターンを使って確実にサーバーのホストにだけ当てるのがポイントです
select-window で確実に指定ホストに移動する
tmux のウィンドウの名前にホスト名を表示できるようにしても,結局指定ホストに移動するには choose-window
などを使って選ぶしかありません
choose-window
はデフォルトで bind-key w
で見れますが,とはいえ量が多いと大変手間です
ここで select-window
の登場です
Tmuxでウィンドウをインタラクティブに移動する - Qiita [キータ]
この記事の通り,適当なキーバインドで select-window
を使えるようにします
unbind-key s
bind-key s command-prompt "select-window -t '%%'"
元から bind-key s
に割り当てられているものを調べたい場合は以下の記事のように list-keys
を使います
tmux のキーバインドを調べる方法 - Qiita [キータ]
このように設定することで ウィンドウの名前を直接指定してそのウィンドウに移動ができます
実例を見せます
サーバー a0, a1, b0, c1 にログインしている状況で現在 b0 で作業しています
そこで bind-key s[Enter] a0
と入力するだけで a0 に移動することが出来ます
最初に紹介した手法を使えば ssh するだけでウィンドウの名前を確実にホスト名に変えておいてくれます
また頭文字数文字を打つだけでも名前が一つに限定できるならそのウィンドウに移動することが出来ます
bind-key ,
を使えばウィンドウの名前は変えられるのですぐに飛びたい特殊なウィンドウにはユニークな名前を付けるのも良いと思います
今回は 4 つだけでしたが,これが画面に収まる量を超えるとこれがないと作業が極めて困難になります
一つ一つの威力は小さいですが,紹介した 3 つ全てを組み合わせるとかなり強力な味方になってくれると思いますので皆さんも是非試してみてください!
最高便利!!