Prompt personalizado do Tmux e ZSH: bug com o nome da janela


43

Eu personalizei meu prompt do ZSH com oh-my-zsh para torná-lo mais legível e adicionar informações sobre o git se eu estiver em um repositório.

Exemplo:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(em um repositório git)

Funciona bem, mas tenho alguns erros tmuxe o nome da janela. Ele ainda exibe um valor sem sentido e não posso desabilitá-lo com automatic-rename off(ele simplesmente não funciona, o nome da janela é alterado após cada comando), para o primeiro exemplo de uso do tmux ~/docsno nome da janela.

Não tenho certeza de como consertá-lo, gostaria de manter o prompt do zsh como está, se puder fazer alterações, mas gostaria de entender onde está o problema?

Outra solução pode ser redefinir o comando settile(a partir desta resposta ), mas não sei como fazê-lo da maneira certa.

Respostas:


76

Dei uma olhada no oh-my-zsh e encontrei um provável suspeito .

Quando o valor da variável de ambiente TERM começa com screen(que deveria estar na tela e no tmux ), ele usa uma sequência de controle de terminal da tela para definir o nome da janela como

  • (imediatamente antes de exibir um prompt de shell)
    a parte mais à esquerda do caminho "til compactado" do diretório de trabalho atual ( ..seguido pelos últimos 13 caracteres ou o caminho inteiro, se tiver menos de 15 caracteres) e
  • (pouco antes de iniciar um comando)
    a primeira “palavra” de comando sobre-a-ser-executado (sem contar ssh, sudoe alguns outros).

Parece que está funcionando dessa maneira para você (você disse que sua janela com o nome mudou para ~/docsquando você estava naquele diretório). Se você deseja desativar essa renomeação automática, é possível desativá-lo completamente, definindo o parâmetro do shell DISABLE_AUTO_TITLE trueem .zshrc:

DISABLE_AUTO_TITLE=true

Se você acabou de definir isso em um shell interativo, você terminará com uma string vazia para o nome da janela atual, mas o oh-my-zsh interromperá a atualização da janela antes de cada prompt e comando nessa instância do shell (ele precisa estar em seu .zshrca afectar todos os novos casos de shell).


4
Esta é uma resposta perfeita. Preciso, informativo, conciso e direto ao ponto. Além disso, fornece uma solução, além de responder à pergunta original ("entender onde está o problema"). É lamentável que quem teve tempo para perguntar não se incomodou em marcar isso como a resposta.
dmondark

Obrigado obrigado obrigado obrigado obrigado obrigado
Jezen Thomas

Onde está um .zshrcarquivo para todos os usuários?
andilabs

29

Eu sei que a resposta acima fornece uma solução, mas outra é simplesmente adicionar essa opção ao seu ~ / .tmux.conf

set-option -g allow-rename off

Esta é uma solução melhor, pois afeta apenas o tmux.
Paul Oliver

Mesmo com essa configuração, o painel de junção seguido pelo painel de interrupção redefine o nome da janela :(
djsadinoff

6

Eu encontrei o mesmo problema, que é o nome da janela do tmux, que foi alterado mesmo configurando em .tmux.conf:

set-window-option -g automatic-rename off

Obrigado resposta de Chris. Meu nome de janela tmux não foi renomeado automaticamente depois que eu mudei:

set -g default-terminal "screen-256color"

para:

set -g default-terminal "xterm-256color"

0

Se você deseja desativar a renomeação automática apenas para determinada janela, poderá usar:

 set -t [WINDOW_NUMBER] automatic-rename off

Desative a renomeação automática em janela específica em outra sessão:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.