
プレフィックスキーを送信した後にのみステータスバーが表示されるようにしたいと思います。予想されるコマンドを送信した後、バーが再び消えることを望みます。
私はそれが次のように動作すると思います:
C-b
(連絡先の送信)を押します。- ステータスバーが表示されます
- メディア
c
(例えば) - ステータスバーが消えます&新しいウィンドウが作成されました
この問題を解決する方法に関する提案はありますか?ありがとうございます!
答え1
これは簡単にするのが難しいです。
プレフィックスを押すと表示されるのは簡単です。プレフィックスオプションをオフにしてキーをバインドするだけです。
set -g prefix None
bind -n C-b set status on \; switchc -Tprefix
問題は、「すべてのコマンド発生」フックがないため、キーが押されたときに閉じるように説得することです。他のキーバインディングを変更してドラッグできますc
。
bind c set status off \; new-window
しかし、すべてのキーに対してこれを行うのは痛いでしょう。
または、次のように約1秒後に閉じることもできます。
set -g prefix None
bind -n C-b set status on \; run -b "sleep 1; tmux set -t'#{session_id}' status off" \; switchc -Tprefix
ただし、複数のコマンドを順番に実行したい場合は、これは面倒なことになります。これより複雑なスクリプトを作成することもできますが、ユーザーオプションでCbを押す時間を更新し、十分な時間が経過した後にのみ状態を再び閉じることができます。
次のキーを押したときにオフにする必要がある場合は、他のすべてのキーバインディングを変更するか、tmuxを変更して使用可能なフックをトリガーする必要があります。
答え2
私はニコラスの提案を少し変更して結果を得ました。
bind -n C-b set status on \;\
switch-client -T prefix \;\
run-shell -d 1 -b "while [ $(tmux display-message -p '##{client_prefix}') -eq 1 ]; do sleep 0.5; done; tmux set status off"