tmuxinator
resolveu:
tmuxinator start [project]
E ele passa pela atual sessão tmux
diretamente para a nova.
Eu habilitei o plugin tmux em oh-my-zsh com ZSH_TMUX_AUTOSTART=true
e agora toda vez que eu abro o terminal eu estou anexado a uma sessão. Essa parte é muito legal.
O problema é que agora não consigo iniciar uma nova sessão e ter acesso ao shell.
Existe uma maneira de iniciar uma nova sessão sem desativar o tmux plugi?
$ tmux new-session -s new
sessions should be nested with care, unset $TMUX to force
Eu abri um ticket no github: link
Sem -d
, new-session
será anexado automaticamente à nova sessão (você provavelmente não deseja sessões aninhadas * , portanto, o aviso). O que você provavelmente quer fazer é criar uma nova sessão “desanexada” e depois alternar o cliente atual para essa nova sessão. Eu não acho que new-session
tenha uma opção para lidar com esse caso de uso, mas é bastante fácil de fazer com um pouco de shell de script:
tmux-new() {
if [[ -n $TMUX ]]; then
tmux switch-client -t "$(TMUX= tmux -S "${TMUX%,*,*}" new-session -dP "$@")"
else
tmux new-session "$@"
fi
}
# example usage:
tmux-new -s new
Se não houver TMUX, basta executar tmux new …
. Caso contrário,
-S
para apontar para o servidor atual, -d
para criar uma sessão desanexada e -P
para imprimir o nome da nova sessão (isso requer tmux 1.8 ou posterior). A saída (o nome da nova sessão) é então atribuída a switch-client
.
Se você não tiver o tmux 1.8, poderá ter que refazê-lo um pouco (por exemplo, fazer a função assumir um argumento obrigatório que nomeie a nova sessão para que você possa passá-la para new-session
e switch-client
).
* Você teria duas barras de status; é complicado digitar os comandos tmux para a sessão interna; e pode fazer coisas estranhas se você alternar o cliente interno para visualizar a sessão externa (pense: hall of espelhos).
† Talvez o aviso deva ser suprimido ao usar -d
…