programing

zshon mac에서 Git 탭 완료가 작동하지 않습니다.

lastmoon 2023. 7. 1. 09:18
반응형

zshon mac에서 Git 탭 완료가 작동하지 않습니다.

아무리 노력해도 zsh 쉘에서 git tab/auto completion이 작동하지 않는 것 같습니다.bash-completion 스크립트와 zsh-completion 스크립트를 다운로드하여 지침에 따라 처리했지만 작동할 수 없습니다.

나는 오마이-즈시를 다시 설치했지만 그것은 도움이 되지 않거나 아무런 차이가 없는 것처럼 보였습니다.

작업을 수행한 사용자가 자신의 설정을 설명해 줄 수 있습니까? 이 설정을 에뮬레이트하여 작업을 수행할 수 있습니까?

구체적으로, 지금까지 제가 한 일은 다음과 같습니다.

  • zsh를 기본 셸로 사용하는 것으로 전환됨
  • oh-my-zsh가 설치되었습니다.
  • https://github.com/git/git/blob/master/contrib/completion/git-completion.bash 을 다운로드하여 저장했습니다.~/.completion/git/git-completion.sh
  • https://github.com/git/git/blob/master/contrib/completion/git-completion.zsh 을 다운로드하여 저장했습니다.~/.zsh/_git
  • 추가된zstyle ':completion:*:*:git:*' script ~/.completion/git/git-completion.sh

운이 없습니다.

TL;DR 원라이너

echo 'autoload -Uz compinit && compinit' >> ~/.zshrc && . ~/.zshrc

이렇게 하면 .zshrc에서 완료할 수 있으며 현재 터미널 세션에 설정을 적용할 수 있습니다.

설명:

사실, ZSH는 즉시 완료하는 방법을 알고 있지만 완료 기능 자체를 켜야 합니다(설명한 단계를 보면 아직 완료하지 않은 것 같습니다).

이 항목을 에 추가하는 중.zshrc충분해야 합니다.

autoload -Uz compinit && compinit

당신이 선을 친 후에..zshrc파일, ZSH가 새 구성을 선택할 수 있도록 셸을 다시 시작하는 것을 잊지 마십시오(또는 현재 세션에서 라인을 실행할 수 있습니다. 그러면 해당 세션에 대해 자동 완성이 활성화됩니다).

zsh compinit: insecure directories경고의

@FranMorzoa가 사용을 제안해줘서 고마워요.compinit -u완료 스크립트에 대한 보안 검사를 건너뜁니다.

이렇게 하면 경고/확인이 제거되지만 경고는 이유가 있으므로 정상적으로 발생해서는 안 됩니다.

이는 완료 스크립트의 소유권에 문제가 있음을 나타내며 다음 중 하나로 해결할 수 있으며 해결해야 합니다.

  • brew.sh 버전:

    chmod -R go-w "$(brew --prefix)/share"

  • 또 다른 것은 아마도 비 양조 zsh, GitHub의 pvinis에 대한 크레딧에서 작동할 것입니다.

    compaudit | xargs chmod g-w

추가 정보

PS 여기에 있는 또 다른 대답은 설치를 제안합니다.hub대신 도구: 도구는 유용하지만, 깃 주변의 타사(github community) 래퍼일 뿐입니다.따라서 "ZSH에서의 Git 완료"라는 주제와는 무관합니다.

2019년 뷰어:

ZSH를 사용하는 경우:

brew install hub

mkdir ~/.zsh그리고.mkdir ~/.zsh/completions

디렉토리만들고 허브를 설치한 후에는cp그자리의 hub.bash_completion.sh 지역의 로 바랍니다.zsh/completion폴더를 누릅니다.
는 (나의것은것▁(은나.cp /usr/local/etc/bash_completion.d/hub.bash_completion.sh ~/.zsh/completions/_hub)

그런 은 그다런음다다추다니합가에 합니다.~/.zshrc 파일:

fpath=(~/.zsh/completions $fpath) 
autoload -U compinit && compinit

그리고나서source ~/.zshrc그리고 voila! 당신은 Git 완료를 이용할 수 있어야 합니다.

출처 : https://github.com/github/hub/tree/master/etc#zsh

그 대답은 내가 가지고 있었다는 것이었습니다.alias git=hub내 안에서.zshrc허브에 대한 자세한 내용은 https://github.com/github/hub 을 참조하십시오(멋있습니다).

허브 및 깃 완성과 관련하여 발생한 문제에 대한 정보 링크는 다음과 같습니다. https://github.com/github/hub/issues/586#issuecomment-47727226

홈브루를 통해 git를 설치할 때 oh-my-szh가 설치하는 기본값보다 훨씬 덜 완전하고 기능적인 자체 zsh 셸 확장을 설치하는 것이 저의 문제였습니다.Git 설치 버전을 확인한 다음 zsh 자동 완성을 제거합니다.내 항목은 여기에 있었고 이렇게 삭제되었습니다.

rm -rf /usr/local/Cellar/git/2.28.0/share/zsh/

그렇다고 해서 문제가 다른 답 중 하나일 수도, 또는 이들의 조합일 수도 없다는 것은 아닙니다.

아무런 도움이 되지 않으면 심볼릭 링크를 제거합니다./usr/local/share/zsh/site-functions/_git홈브루 설치 git 후에 표시됩니다.brew install git

오늘도 같은 문제가 저를 괴롭힙니다.답변에 영감을 받아 .zshrc를 둘러보니 다음과 같습니다.

Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
Example format: plugins=(rails git textmate ruby lighthouse)
Add wisely, as too many plugins slow down shell startup.
plugins=(git)

git 플러그인을 활성화하려면 위의 줄에 주석을 달기만 하면 문제가 해결됩니다.플러그인에 대한 자세한 내용은 https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/git 에서 확인할 수 있습니다.

mkdir -p ~/.zsh/completions
curl "https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh" > ~/.zsh/completions/_git
chmod a+x ~/.zsh/completions/_git
cat ~/.zshrc | grep 'fpath=(~/.zsh/completions $fpath)' > /dev/null || echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
cat ~/.zshrc | grep 'autoload -Uz compinit && compinit' > /dev/null || echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
source ~/.zshrc

아니면 그냥 도망가.brew install zsh-completions지침을 따릅니다.

언급URL : https://stackoverflow.com/questions/24513873/git-tab-completion-not-working-in-zsh-on-mac

반응형