Estou usando o macOS 10.15.2 com iTerm2, zsh 5.7.1 e oh-my-zsh (tema robbyrussell).
Percebi que a impressão do prompt é um pouco lenta em relação ao bash. Por exemplo, se eu pressionar enter, o cursor inicialmente vai para o início da próxima linha e, depois de um tempo, o prompt do shell entra e o cursor é movido para sua posição natural. Por exemplo, se → ~
é o prompt quando estou na minha pasta pessoal e []
é meu cursor, quando pressiono enter, vejo:
0 - Estado ocioso
→ ~ []
1 - Imediatamente após pressionarenter
[]
2 - De volta ao estado inativo
→ ~ []
Essa lentidão é particularmente evidente quando pressiono enter várias vezes rapidamente. Neste caso, vejo algumas linhas em branco. Isso é o que eu vejo
→ ~
→ ~
→ ~
→ ~
→ ~
→ ~
→ ~
→ ~
→ ~ []
Eu venho do bash shell e quando uso o bash, não há tanta lentidão. Não tenho certeza se isso é um problema de oh-my-zsh ou seu comportamento natural. Eu gostaria de saber mais sobre isso e, eventualmente, como corrigi-lo. Obrigado.
PS : o problema vem de oh-my-zsh e persiste mesmo se eu desabilitar todos os plugins.
PPS : Eu postei anteriormente esta pergunta no SO. Obrigado a user1934428 por sua ajuda e por sugerir que eu mova esta questão aqui.
Eu não sei o que oh-my-zsh coloca no prompt por padrão. Talvez ele tente identificar o status do controle de versão, esse é um componente de prompt muito popular que pode consumir muito tempo.
Para ver o que está acontecendo, ative os rastreamentos de comando com
set -x
.Se o rastreamento for tão longo que rola para fora da tela, redirecione-o para um arquivo com
Isso direciona todas as mensagens de erro para o arquivo, não apenas o rastreamento. Para obter rastreamentos e erros de volta no terminal, execute
Você pode personalizar o formato de rastreamento por meio do
PS4
. Esta é uma string de formato que pode conter escapes de prompt . Por exemplo, para adicionar informações de tempo precisas:Eu tive o mesmo problema com ele, e também foi o
git_prompt_info
que causa a desaceleração do shell. Esteja ciente de que alguns temas oh-my-zsh usam o plugin git meio "codificado" em seus propmpts.Portanto, considere um da lista que você pode obter com este comando
Verificar se o git dir está sujo parece estar causando o atraso.
Para acelerar a resposta do shell, desative a verificação se o dir está sujo executando em seu terminal:
Eu consertei isso no meu laptop indo para a pasta ~/.oh-my-zsh e executei
git pull
. Havia cerca de 1200 commits pendentes. Então eu fecho o iTerm e abro novamente. Você receberá um prompt de oh-my-zsh sendo atualizado.O prompt do terminal de contêiner vscode dev estava sendo lento para mim, levando vários segundos para retornar ao prompt após concluir qualquer comando.
set -x
mostrou que o problema estava com umgit ls-files
comando sendo usado para atualizar o texto da ramificação/sujo no prompt para um repositório grande. Estranhamentegit ls-files
em si não era lento.A configuração
git config codespaces-theme.hide-status 1
resolveu.