2013-05-18 18 views
11

Jestem nowy tmux i próbuję edytować plik tmux.conf mieć lewą stronę paska stanu odzwierciedlać:Tmux: Jak skonfigurować tmux, aby wyświetlał bieżący katalog roboczy okienka na pasku stanu?

[SessionName] [CurrentPane] [CurrentWorkingDirectory]

jestem w stanie wyświetlić SessionName i CurrentPane. Jednak nie mogę wyświetlić wartości CurrentWorkingDirectory.

Próbowałem kilka #(shell command) opcje:

  1. #(tmux select-pane -t :.#P; pwd): Ale to drukuje jakąś inną zmienną $ PWD który robi NIE odzwierciedlać bieżącym katalogu sesji bash w obecnym okienku.

  2. #(tmux select-pane -t :.#P; tmux send-keys pwd Enter) Po pierwsze, mimo że zrobił wydrukować CurrentWorkingDirectory jeśli jestem w terminalu. Drukuje to w terminalu i NOT na pasku stanu, tak jak tego chcę. Po drugie, wprowadzono "pwd Enter" co 15 sekund, czy byłem w terminalu, co było kłopotliwe dla wstecz, jeśli nie jesteś tak szybki (jak ja).

Próbowałem tych opcji, ale bez skutku, czy można robić, co chcę? i jak?

Odpowiedz

15

Jest na to zmienna, która nie wydaje się być w podręczniku, ale jest wymieniona w wersji rozwojowej. Dla mnie działa w wersji 1.8 tmux.

set -g status-left "#{pane_current_path}" 

Należy zauważyć, że działa to również po umieszczeniu go w oknie. Każdy status okna będzie wskazywać odpowiednie katalogi robocze.

setw -g window-status-format "#{pane_current_path}". 
+0

Powoduje to zmianę nazwy panelu tylko wtedy, gdy dla mnie jest tworzony nowy panel. –

4

Nie jestem pewien, jak to zrobić w bashu, ale w zsh, istnieje hak, który jest uruchamiany przed każdym poleceniem. W swojej .zshrc:

precmd() { 
    tmux set -qg status-left "#S #P $(pwd)" 
} 

to, że za każdym razem będzie działać polecenia tmux uruchomieniu komendy. Mam nadzieję że to pomoże. Od bash nie ma precmd, nie jestem pewien, jak to zrobić.

+0

Dzięki za pomoc.Ponieważ jestem początkującym w Linuksie i zacząłem uczyć się w bashu, nie chcę przełączać się na zsh, chyba że naprawdę muszę. Stąd powód dla którego preferuję rozwiązanie dla basha. – rajames

+0

Znalazłem jednak sposób na uruchomienie programu precmd z bash przy użyciu sztuczki [Glyph Lefkowitz] (http://glyf.livejournal.com/63106.html). Znaleziono rozwiązanie [tutaj] (http://superuser.com/questions/175799/does-bash-hook-a-hook-that-is-run-before-executing-a-ommandand). Dzięki! – rajames

3

Niestety, proponowane rozwiązanie nie działa dla wersji 1.7 - "oficjalną wersję" dla openSUSE 12.3, ale udało mi się znaleźć rozwiązanie:
W /etc/tmux.conf:

setw -g window-status-current-format "#T(#I:#W#F)" 
setw -g window-status-format "#T(#I:#W#F)" 

Tutaj #T - mówi, aby wyświetlić bieżący tytuł panelu, który można ustawić za pomocą sekwencji ucieczki. Za robienie tego w każdej komendy powłoki, umieścić gdzieś w .bashrc:

[[ -n "$TMUX" ]] && PROMPT_COMMAND='echo -n -e "\e]2;${PWD/${HOME}/~}\e\\"' 

Działa to dla mnie na openSUSE 12.3, tmux 1,7, bash 4.2.53.

+0

Nie działa: -bash: [[-n: command not found' – xApple

+0

Tak, oczywiście! Spacje są wymagane po [[i wcześniej]]. Po teście skopiowałem linię z okna terminala i nie zauważyłem, że przestrzenie, które te przestrzenie zniknęły podczas wyświetlania. – avb1003

Powiązane problemy