как да предам tmux променлива на външен скрипт за лентата на състоянието

Използвам ‹#{pane_current_path}> по подразбиране, за да покажа текущата работна директория за текущия използван панел. Резултатът обаче е дълъг пълен път на директория, който заема много място в лентата на състоянието.

Това, което исках, е да използвам shell скрипт или ruby ​​скрипт, за да го съкратя и да покажа кратък път като започване от домашна директория или само от последните две поддиректории.

Затруднявам се да намеря начин да позволя на скрипта на обвивката да вземе #{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 дисплей -p "#D" | tr -d %) | sed 's/^.*=//'

Така че, моля, можете ли да предложите дали това, което очаквам, е изпълнимо или не, все пак да манипулирам #{pane_current_path}?


person stephen cheng    schedule 16.02.2015    source източник


Отговори (1)


Вместо да предавате аргумент на скрипт, защо не извлечете това, от което се нуждаете, от самия скрипт?

Можете да използвате това:

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

Това ще получи текущия път на прозореца в скрипта или извън tmux.

Ако възнамерявате да използвате bash за скрипта, ето как присвоявате стойност на текущия път на панела към променлива (между другото двойните кавички вътре в двойните кавички са добре):

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

person Community    schedule 17.02.2015
comment
Между другото, използвам няколко от вашите страхотни добавки. - person stephen cheng; 19.02.2015
comment
Възможно ли е да имам име на панел на базата на панел за индикация за какво е този панел? Все още не намерих отговор и изглежда, че tmux сега не поддържа име на панел. Има ли друга вътрешна променлива, подобна на #{pane_current_path}, която мога да използвам, за да настроя ръчно това име сам чрез моя скрипт? - person stephen cheng; 19.02.2015
comment
Има променлива за формат "#{pane_title}".. Не съм сигурен дали може да се зададе (или е само за четене). Освен това от това, което виждам, тази променлива не се показва никъде, но със сигурност можете да я извлечете за вашите нужди. Надяваме се, че това ще помогне за по-нататъшното проучване. - person ; 19.02.2015