как передать переменную tmux во внешний скрипт для строки состояния

Я использую значение по умолчанию ‹#{pane_current_path}> для отображения текущего рабочего каталога для текущей используемой панели. Однако результатом является длинный полный путь к каталогу, занимающий много места в строке состояния.

Я хотел использовать сценарий оболочки или сценарий 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 display -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