Saída extra ao executar comandos de zsh em Guake

2

No shell zsh, estou tendo o seguinte problema. Depois de pressionar um comando no prompt de comando, ele é repetido na segunda linha e também há um caractere inelegível.

EucorrozshemGuake.Aquiestáomeu.zshrc:

aTERM="tela-256 cores"

# install zsh antigen
source /usr/share/zsh-antigen/antigen.zsh

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle debian
antigen bundle autojump
antigen bundle cp
antigen bundle colorize
antigen bundle command-not-found
antigen bundle git
antigen bundle zsh-users/zsh-syntax-highlighting
# Set Home for VirtualEnvWrapper
export WORKON_HOME="$HOME/.config/virtualenv"
antigen bundle virtualenvwrapper
antigen bundle tmux
antigen bundle littleq0903/gcloud-zsh-completion

# Tell antigen that you're done.
antigen apply



# using system powerline
source /usr/share/powerline/bindings/zsh/powerline.zsh
export MANPAGER="/bin/sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist noma' -\""

Comecei a remover linha por linha para verificar qual deles está causando o problema. Eu acredito que é o "uso de antígeno oh-my-zsh".

Outro ponto problemático: eu tentei muito tmux.conf , mas simplesmente não funcionou, a única coisa que funcionou é isso e tmux=tmux -2 .

    
por rafee 18.08.2017 / 11:10

1 resposta

1

Esses tipos de problemas surgem quando algo está imprimindo coisas para stdout quando não deveriam, e, portanto, geralmente atrapalhando o prompt do Editor do Zsh Line ou a saída do comando. A impressão incorreta provavelmente é feita a partir de uma função de gancho que o Editor de Linhas executa quando um comando do usuário é executado. Você pode encontrar a chamada de impressão / echo ofensiva procurando nos corpos das funções do gancho:

whence -f precmd $precmd_functions preexec $preexec_functions

Essas são funções de gancho documentadas no link .

Como mencionado nos comentários anteriores, a chamada de impressão / eco incorreta provavelmente é uma tentativa fracassada de falar com o terminal, em vez de imprimir na stdout. Normalmente eu iria "se sair" a linha de código ofensiva por algo como:

if [[ $TERM != guake ]]; then
    print -n "\E]..."
fi

mas parece que Guake não está definindo o TERM corretamente. Espero que você possa descobrir outra maneira de detectar qual terminal está sendo executado. Ou talvez apenas limpar / modificar essas funções e arrays de funções em seu .zshrc.

    
por 27.08.2017 / 09:20