oh-my-zsh 프롬프트가 매우 느립니다. 이 문제를 해결하는 방법

oh-my-zsh 프롬프트가 매우 느립니다. 이 문제를 해결하는 방법

저는 iTerm2, zsh 5.7.1 및 oh-my-zsh(robbyrussell 테마)와 함께 macOS 10.15.2를 사용하고 있습니다.

프롬프트 인쇄가 bash에 비해 약간 느린 것으로 나타났습니다. 예를 들어 를 누르면 enter커서는 처음에 다음 줄의 시작 부분으로 이동한 다음 잠시 후 쉘 프롬프트가 나타나고 커서가 원래 위치로 이동합니다. 예를 들어, → ~홈 폴더에 있을 때 나타나는 프롬프트이고 []커서인 경우 Enter 키를 누르면 다음이 표시됩니다.

0 - 유휴 상태

→ ~ []

1 - 누른 직후enter

[]

2 - 유휴 상태로 돌아가기

→ ~ []

이러한 속도 저하는 Enter 키를 여러 번 빠르게 누를 때 특히 두드러집니다. 이 경우 빈 줄이 몇 개 보입니다. 이것이 내가 보는 것입니다

→ ~
→ ~
→ ~

→ ~

→ ~


→ ~
→ ~
→ ~

→ ~ []

나는 bash 쉘에서 왔으며 bash를 사용할 때 그렇게 느리지는 않습니다. 이것이 oh-my-zsh의 문제인지 자연스러운 동작인지 잘 모르겠습니다. 이 문제와 궁극적으로 해결하는 방법에 대해 자세히 알아보고 싶습니다. 감사해요.

폴리스티렌: 문제는 oh-my-zsh에서 발생합니다. 모든 플러그인을 비활성화해도 여전히 존재합니다.

폴리페닐렌 설파이드: 이전에 SO에 이 질문을 게시한 적이 있습니다. 감사해요사용자 1934428그의 도움과 이 질문을 여기로 옮기자고 제안해 주셔서 감사합니다.

답변1

oh-my-zsh가 기본적으로 프롬프트에 무엇을 입력하는지 모르겠습니다. 아마도 매우 인기 있는 프롬프트 구성 요소이며 시간이 많이 걸릴 수 있는 버전 제어 상태를 식별하려고 할 수도 있습니다.

무슨 일이 일어나고 있는지 보려면 다음을 사용하여 명령 추적을 켜십시오.set -x.

→~
→~세트-x
프롬프트를 계산하기 위해 실행되는 추적 명령
→~
프롬프트를 계산하기 위해 실행되는 추적 명령
→~세트+x
+zsh:3> 세트+x
→~
→~

추적이 너무 길어서 화면 밖으로 스크롤되는 경우 파일로 리디렉션하세요.

exec 2>zsh.err

이렇게 하면 추적뿐만 아니라 모든 오류 메시지가 파일로 전달됩니다. 터미널에서 추적 및 오류를 얻으려면 다음을 실행하십시오.

exec 2>/dev/tty

추적 형식을 사용자 정의할 수 있습니다.PS4. 이는 다음을 포함할 수 있는 형식 문자열입니다.빨리 탈출해라. 예를 들어 정확한 타이밍 정보를 추가하려면 다음을 수행하세요.

PS4='%D{%s.%9.}+%N:%i> '

답변2

git 디렉토리가 더러운지 확인하면 지연이 발생하는 것 같습니다.

셸 응답 속도를 높이려면 터미널에서 실행하여 디렉터리가 더러워졌는지 확인하는 기능을 비활성화하세요.

git config --add oh-my-zsh.hide-dirty 1

모든 쉘을 다시 시작하는 것을 잊지 마십시오.

답변3

나도 같은 문제에 직면했고 이것이 git_prompt_info쉘 속도가 느려진 이유였습니다. 일부 oh-my-zsh 테마는 프롬프트에서 일종의 "하드코딩된" git 플러그인을 사용합니다.

따라서 이 명령을 사용하여 얻을 수 있는 목록 중 하나를 고려하십시오.

grep --files-without-match "git" ~/.oh-my-zsh/themes/*

답변4

내 노트북에서 이 문제를 해결하고 ~/.oh-my-zsh 폴더로 이동하여 git pull약 1200개의 커밋이 보류 중이었습니다. 그런 다음 iTerm을 닫았다가 다시 엽니다. oh-my-zsh가 업데이트 중이라는 알림을 받게 됩니다.

관련 정보