【问题标题】:how to pass tmux varible to external script for the status bar如何将 tmux 变量传递给状态栏的外部脚本
【发布时间】:2015-04-17 12:42:39
【问题描述】:

我使用默认的 来显示当前使用的窗格的当前工作目录。然而,结果是一个冗长的完整目录路径在状态栏中占用了大量空间。

我想要的是使用 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/^.*=//'

那么,您能否建议我所期望的是否可行,无论如何要操纵 #{pane_current_path} ?

【问题讨论】:

    标签: shell environment-variables zsh statusbar tmux


    【解决方案1】:

    与其将参数传递给脚本,不如从脚本本身获取您需要的内容?

    你可以用这个:

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

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

    如果您打算对脚本使用 bash,以下是您将窗格当前路径值分配给变量的方法(顺便说一句。双引号内的双引号是可以的):

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

    【讨论】:

    • 顺便说一句,我正在使用你的一些很棒的插件。
    • 我是否可以有一个基于每个窗格的窗格名称来指示该窗格的用途?我还没有找到答案,似乎 tmux 现在不支持窗格名称。是否有另一个类似于 #{pane_current_path} 的内部变量可以用来通过我的脚本自己手动设置此名称?
    • 有一个"#{pane_title}" 格式变量。我不确定它是否可以设置(或者它是只读的)。同样从我所见,该变量不会显示在任何地方,但您当然可以根据需要获取它。希望这有助于进一步调查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多