
.tmux.conf
現在使用しているシステムの種類に応じて、ファイルの特定の部分を条件付きにしようとします。まず、MacOSでは1つの部分だけを作業したいと思います。
マニュアルページでは、#(COMMAND)
構文を使用して特に条件付き形式の出力を置き換えることができますCOMMAND
。だから私はこれを試しています:
%if "#{==:#(/usr/bin/uname -s),Darwin}"
CONF-COMMANDS
%endif
しかし、幸運ではありません。CONF-COMMANDS
Macでは無視されます。もちろん「Darwin」が実際に出力されることを確認しましたuname -s
。ご覧のとおり、私はすべてのPATH
問題を排除するために絶対ファイル名を使用しています。また、この単純な条件が%if "#{==:Darwin,Darwin}"
実際に機能していることを確認しました。だから構文の面で何か間違っているようです。それは何ですか?
答え1
私はあなたがマニュアルページに記載されている状況に直面したと思います:
フォーマットをビルドするとき、tmuxは
#()
コマンドが完了するのを待たずに同じコマンドを実行した以前の結果を使用し、コマンドが以前に実行されなかった場合はプレースホルダーを使用します。
これにより、Tmuxセッションでこれを実演できます。
tmux display-message -p "#(uname -s)"
返す必要があります<'uname -s' not ready>
。
次のif-shell
選択肢を試してください%if
。
tmux if-shell '[ "$(uname -s)" = "Darwin" ]' "CONF-COMMAND; CONF-COMMAND2; ..."
Tmux 3.2aでは、構文がより明確です。
tmux if-shell '[ "$(uname -s)" = "Darwin" ]' {
CONF-COMMAND1
CONF-COMMAND2
}
Macではテストされていませんが、WSL / Ubuntu / Bashで動作することが確認されました。 Mac / Zshで動作する必要があると思います。