Como posso fazer o tmux dizer ao bash para exibir a versão * lógico * do diretório atual em janelas abertas recentemente?

6

Plano de fundo

Estou usando o tmux 2.0, o Ubuntu 14.04.2 LTS no VirtualBox.

Para fazer o tmux abrir novas janelas com o mesmo caminho da janela atual, adicionei essa linha ao meu arquivo ~/.tmux.conf :

bind c new-window -c "#{pane_current_path}"

Note que no tmux, se eu cd de casa para um subdiretório através de um symlink , então verifique pwd e pwd -P eu recebo:

~$ cd pythons
~/pythons$               # An awesome prompt

~/pythons$ pwd           # According to "man pwd" this shows the "logical" path
/home/qiime/pythons

~/pythons$ pwd -P        # and this shows the "physical" path
/media/sf_Google_Drive/Home/Programs/Pythons

O problema é

Se eu abrir uma nova janela tmux enquanto em ~/pythons o novo prompt bash assume o caminho físico :

/media/sf_Google_Drive/Home/Programs/Pythons$     # Not an awesome prompt

Q: Sim, ele está aberto para o diretório correto ... mas existe uma maneira de fazer com que o tmux inicie o bash com o lógico caminho em vez do caminho completo físico ?

Como alternativa, talvez haja algo que eu possa adicionar ao .bashrc para que isso aconteça?

Editar:

Para verificar se alguma configuração está causando esse problema, tentei comentar todas as linhas em ~/.tmux.conf , exceto

bind c new-window -c "#{pane_current_path}"

mas ainda tenho o caminho físico completo. Eu também tentei echo ing o caminho atual (lógico) do topo do meu arquivo ~/.bashrc . Infelizmente, isso ecoa o feio caminho físico da janela pai, que aparentemente se tornou o caminho lógico físico e da nova janela. Então o tmux 2.0 deve estar passando para a nova instância do bash através do valor de "#{pane_current_path}"

Além disso, acabei de encontrar este problema do tmux recentemente aberto: pane_current_path não concorda com o PWD # 33 do painel indicando que este comportamento se origina no código tmux.

P: Então, talvez minha pergunta seja: existe uma solução alternativa?

    
por flyingfinger 28.06.2015 / 06:07

1 resposta

0

O seguinte funcionou para mim.

Para ~/.bashrc , adicione a linha:

PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\u@\H:\w$ '

E para ~/.tmux.conf , adicione as linhas:

bind-key c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'
bind-key % run-shell 'tmux splitw -h "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'
bind-key '"' run-shell 'tmux splitw -v "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'

Reinicie o tmux.

Fontes

Veja a seção "Como posso abrir uma nova janela no mesmo diretório da janela atual?" no link .

Observe que os caracteres no final da linha .bashrc tiveram que ser alterados do original no link acima para '\u@\H:\w$ ' para exibir corretamente o prompt bash completo. Consulte o link para obter mais informações.

    
por 09.07.2015 / 03:11