Tmux: Как настроить tmux для отображения текущего рабочего каталога панели в строке состояния?
Я новичок в tmux, и я пытаюсь изменить файл tmux.conf, чтобы отразить левую часть строки состояния:
[SessionName] [CurrentPane] [CurrentWorkingDirectory]
Я могу отображать SessionName
и CurrentPane
. Однако я не могу показать CurrentWorkingDirectory
.
Я пробовал несколько опций #(shell command)
:
-
#(tmux select-pane -t :.#P; pwd)
: Но это печатает другую переменную $PWD, которая отражает НЕ текущий каталог сеанса bash на текущей панели.
-
#(tmux select-pane -t :.#P; tmux send-keys pwd Enter)
Во-первых, хотя он напечатал CurrentWorkingDirectory
, если я в терминале. Он печатает это в терминале и НЕ в статусе бар, как я хочу. Во-вторых, он вводил "pwd Enter" каждые 15 секунд, был ли я на терминале, что было если вы не так быстро (как я).
Я пробовал эти параметры, но безрезультатно, возможно ли делать то, что я хочу? и как?
Ответы
Ответ 1
Для этого есть переменная, которая, похоже, не находится в man-странице, но упоминается в версии разработки. Для меня он работает в версии 1.8 для tmux.
set -g status-left "#{pane_current_path}"
Обратите внимание, что он также работает, когда вы помещаете его в статус окна. В каждом статусе окна будут указаны соответствующие рабочие каталоги.
setw -g window-status-format "#{pane_current_path}".
Ответ 2
Я не уверен, как это сделать в bash, но в zsh есть крючок, который запускается перед каждой командой. В вашем .zshrc:
precmd () {
tmux set -qg status-left "#S #P $(pwd)"
}
Эта команда будет запускать команду tmux
при каждом запуске команды. Надеюсь это поможет. Поскольку bash
не имеет precmd
, я не уверен, как это сделать.
Ответ 3
К сожалению, предлагаемое решение не работает для версии 1.7 - "официальная версия" для OpenSuse 12.3, но мне удалось найти решение:
В /etc/tmux.conf
:
setw -g window-status-current-format "#T(#I:#W#F)"
setw -g window-status-format "#T(#I:#W#F)"
Здесь #T - указывает текущий заголовок панели, который можно установить с помощью некоторой escape-последовательности. Для этого при каждой команде оболочки поставьте
где-то в .bashrc
:
[[ -n "$TMUX" ]] && PROMPT_COMMAND='echo -n -e "\e]2;${PWD/${HOME}/~}\e\\"'
Это работает для меня на OpenSuse 12.3, tmux 1.7, bash 4.2.53.