zsh를 사용하여 별칭 자동 완성

zsh를 사용하여 별칭 자동 완성

.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

관련 정보