A configuração do Tmux não retém o PWD em nova janela ou divisão de janela

2

Por isso, estou tentando atualizar meu .tmux.conf file para refletir a alteração de -c em new-window . Eu adicionei isso ao meu conf e não está funcionando infelizmente. Minhas novas janelas e painéis sempre começam em ~/ :

# Saner splitting.
bind v split-window -c $PWD -h
bind s split-window -c $PWD -v

# Autorename sanely.
setw -g automatic-rename on

# Better name management
bind c new-window -c $PWD

Meu comportamento esperado é que meu novo painel ou janela esteja no diretório do qual eu já estive antes. Então, se eu estiver na janela 1 que está em ~/Sites/project , minha nova janela também estará lá.

    
por user66402 28.04.2014 / 22:33

1 resposta

4

Você está usando o exemplo errado. ;) Ter $PWD como argumento para -c significa ter os painéis recém-criados iniciados no diretório em que tmux server está em , em outras palavras, o diretório onde você iniciou tmux . O diretório do painel atual é aquele armazenado na tmux variável interna #{pane_current_path} :

* 'default-path' has been removed.  The new-window command accepts '-c' to
  cater for this.  The previous value of "." can be replaced with: 'neww -c
  $PWD', the previous value of '' which meant current path of the pane can
  be specified as:  'neww -c "#{pane_current_path}"'

Então o jeito certo de fazer o que você quer seria

# Saner splitting.
bind v split-window -c "#{pane_current_path}" -h
bind s split-window -c "#{pane_current_path}" -v

# Autorename sanely.
setw -g automatic-rename on

# Better name management
bind c new-window -c "#{pane_current_path}"

Observação: Isso não funcionará se houver um shell de outra pessoa sendo executado em seu painel atual (eu me deparei com isso, então eu digo explicitamente a você): uma sessão sudo ou su em execução, seu novo painel terminará com um diretório de trabalho de / . Isso é simplesmente simples de explicar: seu tmux não pode obter o diretório de trabalho atual do processo em execução, pois ele não possui os privilégios apropriados para fazê-lo por motivos de segurança (não é possível ler o estado vital do processo de um usuário externo). / p>     

por 28.04.2014 / 22:59