Help us understand the problem. What is going on with this article?

tmux で Prefix key が押されているかどうかを表示する

More than 3 years have passed since last update.

tmux でペイン分割とかウィンドウ作成するときとかにキーバインドとして使う Prefix key (C-b とか C-t とか設定されてる) ですが、誤動作を防ぐためにいま Prefix key が押されているのかどうなのか視覚的に確認したいことがあります。

以下のように .tmux.conf を書くことで、Prefix key が押された時に Status line の色を下動画のように反転させられます。

set-option -g status-left '#[fg=cyan,bg=#303030]#{?client_prefix,#[reverse],} #H[#S] #[default]'

prefix-key.gif

(Prefix key は C-t に設定)

重要なのはこれ

#{?client_prefix,#[reverse],}

.tmux.conf では ?<condition>,<true action>,<false action> の形で三項演算子をかけます。で、client_prefix は Prefix key が押されていたら 1 (true) になるというわけです。
今回は色を変えただけですが、押されている / いないときだけ何かしら文字を表示することももちろん可能です。

注意点があって、例えば Prefix key が押された時だけ黄色背景黒文字 (fg=black, bg=yellow) にしようとして

#{?client_prefix,#[fg=black,bg=yellow],}

と愚直に書くと

prefix-key-bug.gif

のように表示がバグります。#[fg=black,bg=yellow] 内のコンマが三項演算子2つめのコンマと解釈されているようです。

こうしたいときは、#[] を分割すればよいです。

#{?client_prefix,#[fg=black]#[bg=yellow],}

prefix-key-great.gif

REF

dtan4
SRE @ Microservices Platform Team
http://dtan4.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away