bash – 如何在状态栏中显示tmux环境变量(作为窗口格式)
它归结为,我想
>打印窗口独有的变量,或 并使用状态栏中的输出,使每个窗口状态是唯一的.我试图通过两种情况更清楚地说明: 情景1 我正在尝试在状态栏中打印一个唯一的每个窗口变量.我在tmux中打开了一个shell,并分别使用以下命令在本地(每个会话)和全局(对于所有会话)存储了tmux环境变量: bash> tmux set-environment TMUX_STATUS_1 localvalue1 bash> tmux set-environment -g TMUX_STATUS_1 globalvalue1 我可以验证这些值,例如通过转到另一个shell(在同一个会话中)并键入: bash> tmux show-environment TMUX_STATUS_1 TMUX_STATUS_1=localvalue1 bash> tmux show-environment -g TMUX_STATUS_1 TMUX_STATUS_1=globalvalue1 我试图在状态栏中打印上述值(本地值和全局值)并配置窗口格式如下: WINDOW='[#(tmux show-environment -g TMUX_STATUS_#I 2>&1)]' setw -g window-status-current-format $WINDOW setw -g window-status-format $WINDOW 最初它只显示windows为'[]’,之后我将stderr重定向到stdout并获得状态栏显示如下: [unknown variable: TMUX_STATUS_1] [unknown variable: TMUX_STATUS_2] [... 需要更改什么才能使状态栏显示(根据以前的命令): [globalvalue1] [unknown variable: TMUX_STATUS_2] [... PS:这不是状态栏刷新问题,因为我在设置变量后手动强制刷新状态栏时使用了以下命令: tmux refresh-client -S 场景2 我写了一个名为’tmuxscript’的小bash脚本,仅包含: echo "$(date '+%S') window:$(tmux display -p '#I') args:$@" 我更新了我的PATH变量,并将窗口格式更改为'[#(tmuxscript arg1 #I)]’.输出如下: [47 window:1 args:arg1] [47 window:1 args:arg1] [... 时间更新很好.在脚本中打印窗口索引似乎不起作用.数字1表示当前聚焦窗口的窗口索引.为所有窗口设置此值,这不是我想要的.我至少期望看到(注意窗口索引号): [47 window:1 args:arg1] [47 window:2 args:arg1] [... 此外,#I没有过去的脚本,但文本’arg1’是.如何将tmux变量传递给脚本? 编辑:我现在也尝试将窗口状态设置为: '[#(tmux show-environment -g TMUX_STATUS_$(tmux display -p "#I") 2>&1 | sed "s:^.*=::" )]' 当活动(聚焦)窗口索引为1时,它给出了以下内容: [globalvalue1] [globalvalue1] [... 任何帮助表示赞赏!
好的,我明白了.
问题在于,在.tmux.conf中指定窗口状态时,您有义务使用-g(全局)标志. .tmux.conf: WINDOW="[#I #20W]" set-window -g window-status-current-format $WINDOW set-window -g window-status-format $WINDOW 关键是在创建窗口后使状态为本地.此外,每个窗口都需要是唯一可识别的.幸运的是,这可以通过tmux变量’window_id’来完成.如下所示,一个小脚本将输出一个唯一的窗口变量作为其第一个参数: ?/ tmuxstatus: #!/bin/bash VARIABLE="W_$1" VALUE=$(tmux show-environment -g $VARIABLE 2>&1) VALUE=${VALUE#*=} echo $VALUE 可能只有TMUX解决方案使状态为本地,但我目前没有时间.我正在使用bash借助于环境变量PROMPT_COMMAND来完成它,该变量在显示提示之前进行评估. .bashrc中: function __prompt_command (){ if [ -n "$TMUX" ] && [ ! -n "$TMUX_INIT" ]; then W=$(tmux display -p '#{window_id}') VARIABLE="W_$W" VALUE="value_$W" STATUS="[#I #(~/tmuxstatus $W)]" tmux set-option quiet on; tmux set-environment -g $VARIABLE $VALUE; tmux set-window window-status-current-format "$STATUS"; tmux set-window window-status-format "$STATUS"; export TMUX_INIT="done"; fi; } export PROMPT_COMMAND=__prompt_command 更改W_id的值时,窗口状态也会更改.看起来像: [1 value_@0] [2 value_@1] [3 value_@2] [4 value_@3] 请享用! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |