.git에 git에 대한 별칭을 만들었습니다 zsh
. 예: gch
= git checkout
, grb
= git rebase --committer-date-is-author-date
및 좀 더 복잡한 명령에 유용한 zsh
기능 git
. 하지만 이러한 별칭이 자동 완성을 사용하도록 하려면 어떻게 해야 합니까 zsh
git
?
답변1
나는 또한 같은 문제에 직면했습니다. 이 옵션이 completealiases
설정되어 있는지 확인해야 합니다 . 시도가 완료되기 전에 별칭이 내부적으로 교체되는 것을 방지합니다. 내 경우에는 setopt completealiases
내로부터.zshrc문제를 해결했습니다. unsetopt completealiases
다음과 같은 경우 시도해 볼 수 있습니다 .아 맙소사설정하세요.
답변2
완료 하기 위해 자동 로드 기능 정의가 포함된 파일을 열면 git
:
내 우분투 시스템에서는 다음이 수행됩니다.
/usr/share/zsh/functions/Completion/Unix/_git
파일 상단에 #compdef
설명이 표시됩니다.
#compdef git git-cvsserver git-receive-pack git-upload-archive git-upload-pack git-shell gitk tig
#compdef
다음과 같이 정의 에 별칭을 추가해 볼 수 있습니다 .
#compdef git git-cvsserver git-receive-pack [...] tig gch grb
^^^ ^^^
그런 다음 새 쉘을 시작하여 새 지침을 로드합니다.
그런 다음 완료를 호출해 보십시오.
무엇인가요 /usr/share/zsh/functions/Completion/Unix/_git
?
#compdef
여기에는 지시문에 정의된 모든 명령의 완료 동작을 정의하는 자동 로드된 "함수"가 포함되어 있습니다 . 이 경우 git
명령 계열은 compinit에 존재하며 fpath
시스템 초기화가 완료되면 compinit에 의해 자동으로 로드됩니다.
무엇인가요 #compdef
?
~에서man zshcompsys
#compdef name ... [ -{p|P} 패턴 ... [ -N name ... ] ]
파일은 자동 로드 가능하게 되며 이름이 완료되면 파일에 정의된 함수가 호출됩니다. 인수가 완성될 명령의 이름이거나 아래에 설명된 -context- 형식의 많은 특수 컨텍스트 중 하나입니다.
답변3
쌓여the_velour_frog의 답변, 원본 완성 파일을 수정하지 않으려는 경우. 다음을 직접 사용할 수 있습니다 compdef
.
compdef <completion_function> <function>
예를 들어
compdef _git gch
답변4
나는 비슷한 일을했습니다. oh-my-zsh를 사용하시나요? 그렇다면 파일에서 zsh-completions 플러그인을 활성화했는지 확인하십시오 .zshrc
. 나는 또한 zsh-autosuggestions 플러그인을 추천합니다.
.zshrc
이 작업을 완료한 후 파일에 다음 항목이 아직 없으면 추가해야 합니다 .
fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit