0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tmux の設定で if を使う(ウィンドウが一つの時と複数の時で異なる動作をするキーバインドの設定)

Last updated at Posted at 2018-04-05

(2018-04-06 20:25 コメント頂いた内容で修正しました)

動機

bind-key C-t last-window

このウィンドウの移動に対するキーバインドを、ウィンドウが一つしか開いていない時はペインの移動に変えたかったのです。

結論

# version 2.3 まで
bind-key C-t if-shell 'test #{session_windows} -eq 1' last-pane last-window

または

# version 2.4 以降
bind-key C-t if-shell -F '#{==:#{session_windows},1}' last-pane last-window

解説

if-shell で、シェルコマンドを対象とした if ができます。書式は

if-shell 「シェルコマンド」 「真の時に実行されるコマンド」 「偽の時に実行されるコマンド」

です。
#{session_windows} で、そのセッションで開いているウィンドウの数が取得できるので、1 なら last-pane それ以外(2 以上)なら last-window が実行される事になります。

なお、tmuxversion 2.4 から、比較を簡単に書ける構文が導入されているので、後者のように tmux の中で閉じるように書けるようです。
apt などで入れている場合、古いバージョンが入っていてこの表記に対応していない場合があるのでご注意を。(というか、自分がそうでした。)

感想

list に wc とかしなくても、もっと簡単に window の数が取れる方法があってもいいような気がするんですがどうなんでしょうか?

すいません、やっぱりありましたね。

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?