如何将tmux变量传递给状态栏的外部脚本

时间:2015-02-16 21:54:33

标签: shell environment-variables zsh statusbar tmux

我使用默认的<#{pane_current_path}>显示当前使用的窗格的当前工作目录。但结果是一个冗长的完整目录路径占用了状态栏中的大量空间。

我想要的是使用shell脚本或ruby脚本来缩短它并显示一个短路径,例如从主目录开始或只是最后两个子目录。

我很难找到让shell脚本把#{pane_current_path}作为变量的方法,见下文:

set -g status-left "#[fg=blue][#S] #I:#P #(cm_tmux_status_pwd.rb #{pane_current_path})"

我对此进行了测试,显然它无法正常工作。

还有其他方法可以实现这一目标,但它有些错误,比如setenv然后showenv在外部脚本,见下文,它只是不能很好地同步。

  

tmux showenv -g TMUX_PWD _ $(tmux display -p" #D" | tr -d%)| SED   ' S /^.*=//&# 39;

那么,请你建议我是否期望是否可行,无论如何操纵#{pane_current_path}?

1 个答案:

答案 0 :(得分:3)

为什么不从脚本本身获取所需内容,而不是将参数传递给脚本?

您可以使用:

tmux display-message -p -F "#{pane_current_path}"

这将在脚本中或从tmux外部获取窗格当前路径。

如果你打算使用bash作为脚本,这里是你如何将窗格当前路径值分配给变量(顺便说一句。双引号内的双引号是可以的):

local current_path="$(tmux display-message -p -F "#{pane_current_path}")"