現在のウィンドウでツリーモード以外のすべてのウィンドウを再生成できるようにしたいです。このスクリプトを作成して動作します。
for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done
R
tmux-action+キーにバインドしたいです。しかし、これはうまくいきません。
私は以下を試しました:
bind-key R send-keys "for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done"
bind-key R run-shell "for i in $(tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do tmux respawn-pane -k -t $i; done" Enter
また、スクリプトをファイルに入れて、以下を追加してみました。.tmux.conf
bind-key R run-shell "./tmux_respawn.sh"
ところで、127エラーが発生した理由を知りません。現在のウィンドウでスクリプトを実行すると、エラーは発生せずに動作します。
また、〜/.bashrcにエイリアスを構築しようとしましたが、シェルではうまく機能しますが、キーバインドを介して実行しようとすると、シェル127エラーが発生します。
alias RespawnTmuxPanes='for i in $(/usr/local/bin/tmux list-panes -F "#{line} #{pane_id} #{pane_mode} #{pane_active}" | sort -k3 | grep -v tree-mode | awk '{print$2}'); do /usr/local/bin/tmux respawn-pane -k -t $i; done'
このスクリプトに対して別々のファイルを作成したくないので、.tmux.conf
バインディングキーを使用して直接実行したいと思います。どうすればいいですか?
ベストアンサー1
私はスクリプトを直接実行しようと試みることを放棄し、~/.tmux.conf
tmuxが実行する別のファイルにスクリプトを構築しました。
スクリプト:
#!/bin/bash
for i in $(tmux list-panes -F '#{pane_id} #{pane_mode} #{pane_active}' -f '#{?#{m:tree-mode,#{pane_mode}},0,1}' | sort -k2 | cut -f1 -d' '); do tmux respawn-pane -k -t $i; done
-f
注:tmuxを使用してツリーモードウィンドウをフィルタリングする方法が見つかったのでawk
。
これは私のtmuxファイルのエントリです。
bind-key R run-shell "/home/mradmin/.tmux_respawn_screens.sh"
これはTMUX-ACTION +を実行でき、R
ツリーモードになっていないすべてのウィンドウを再生成し、最後にあったアクティブウィンドウを実行するために機能します。