Configuration
tmux 配置:命令輸出替換不
我正在嘗試
.tmux.conf
根據我所使用的系統類型使我的部分文件有條件。首先,我希望僅在 MacOS 上處理一個部分。手冊頁說我可以使用
#(COMMAND)
語法來替換COMMAND
格式的輸出,特別是在條件中。所以我正在嘗試這個:%if "#{==:#(/usr/bin/uname -s),Darwin}" CONF-COMMANDS %endif
但是沒有運氣,
CONF-COMMANDS
在Mac上被忽略了。當然,我已經驗證了“達爾文”確實是uname -s
. 如您所見,我使用絕對文件名來消除任何PATH
問題。我還驗證了這個微不足道的條件%if "#{==:Darwin,Darwin}"
實際上是有效的。所以我一定在語法上做錯了什麼。它是什麼?
我感覺您遇到了手冊頁中描述的情況:
構造格式時,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 一起工作。