如何将 tmux 变量传递给状态栏的外部脚本
how to pass tmux varible to external script for the status bar
我正在使用默认的 <#{pane_current_path}> 显示当前使用的窗格的当前工作目录。然而,结果是一个冗长的完整目录路径,在状态栏中占据了很多 space。
我想要的是使用 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}?
与其将参数传递给脚本,不如从脚本本身获取您需要的内容?
你可以使用这个:
tmux display-message -p -F "#{pane_current_path}"
这将在脚本中或从 tmux 外部获取窗格当前路径。
如果您要对脚本使用 bash,这里是将窗格当前路径值分配给变量的方法(顺便说一句。双引号内的双引号是可以的):
local current_path="$(tmux display-message -p -F "#{pane_current_path}")"
我正在使用默认的 <#{pane_current_path}> 显示当前使用的窗格的当前工作目录。然而,结果是一个冗长的完整目录路径,在状态栏中占据了很多 space。
我想要的是使用 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}?
与其将参数传递给脚本,不如从脚本本身获取您需要的内容?
你可以使用这个:
tmux display-message -p -F "#{pane_current_path}"
这将在脚本中或从 tmux 外部获取窗格当前路径。
如果您要对脚本使用 bash,这里是将窗格当前路径值分配给变量的方法(顺便说一句。双引号内的双引号是可以的):
local current_path="$(tmux display-message -p -F "#{pane_current_path}")"