複数のtmuxコマンドを単一のキーストロークにバインドする方法は?

複数のtmuxコマンドを単一のキーストロークにバインドする方法は?

具体的には、特定のコマンドが完了した後に通知を送信しようとしています。たとえば、構成ファイルを再ロードして機能していることを確認するには、次のようにします。

bind R source-file "$HOME/.tmux.conf" && display-message "Configuration reloaded."

それしかし、動作しません。私はまた、コマンドをまとめる他の方法を試していませんでした。

答え1

使用できるrun-shellオプションしかし、重要なのは、コマンドを次のものと組み合わせることです。\;

この場合、次のようになります。

bind R source-file ~/.tmux.conf \; run-shell "echo 'Reload'"

シェルの実行 シェルコマンド
(別名:実行)
ウィンドウを作成せずにバックグラウンドでシェルコマンドを実行します。完了すると、stdout のすべての出力がコピーモードで表示されます。コマンドが成功を返さない場合、終了ステータスも表示されます。

答え2

私の質問をした後、私は役に立つと思いました。試してみましたが、うまくいきます。 tmux設定に複数のファイルを提供するだけです。

具体的には、構成の再読み込みに関連するソリューションは次のとおりです。 .tmux.conf ファイルに次のように入力します。

bind R source-file "$HOME/.tmux/reload.tmux"

~/.tmux/reload.tmux ファイルに次の内容を追加します。

source-file "$HOME/.tmux.conf" 
display-message "Configuration reloaded."

完璧に動作します。

答え3

手動で消去する必要があるコピーバッファに出力を配置するには、run-shellメソッドを使用します。中間構成ファイルを使用すると、2番目の構成ファイルを維持するためのオーバーヘッドが追加されます。私の場合、GUIのポップアップダイアログと同様に、メッセージが短時間で消えたかったのですが、すべてを単一のファイルに保存したいので、これら2つの答えを組み合わせる方が効果的でした。

bind R source-file ~/.tmux.conf \; display-message "Configuration reloaded"

答え4

tmux内では、tcl言語を内部に接続して完全なスクリプトを可能にするパッチがあります。

http://ershov.github.io/tmux/

また、「パターン」キーストロークのジョブ数を指定できます。

これを使用すると、コードは次のようになります。

bind R tcl { source-file "$HOME/.tmux.conf" ; display-message "Configuration reloaded." }

はるかに読みやすいです。

bind R tcl {
  source-file "$HOME/.tmux.conf"
  display-message "Configuration reloaded."
}

関連情報