2016-12-01 14 views
3

많은 시간을, 하위 메뉴하려면 :zsh을 기능 : 앞으로 완성 예를 들어 내가 주변에 기존 래퍼 기능을 writting 결국

function gl { 
    some_computed_stuff=... 
    git --no-pager log --reverse $some_computed_stuff "[email protected]" 
} 
function m { 
    make "[email protected]" && notify-send success || notify-send failed 
} 

나는 별명이 자동 완성을 유지하지만 때로는 기능이 필요하며이 경우 자동 완성에 손실 것을 알고있다 . 예를 들어, 여기에 내 기능 gl 또는 make 완료에 대한 git log 완료를 m으로 유지하고 싶습니다.

compctl -K _git gl을 추가하려고했지만 제안 사항이 없습니다.

gl를 입력하면 것을 이해 zsh을 (뿐만 아니라 떠들썩한 파티를) 만들 수있는 방법이 있나요 : 어떻게 든 내 질문은, 그래서뿐만 아니라 log 인수 _git에 자동 완성 스크립트를 제공하는 방법을 발견해야하기 때문에 그것은 어쨌든 작동하지 않습니다 git log과 정확히 일치합니까? (단 zsh을위한)와 같은 뭔가 :

compctl 'git log' gl 
compctl 'make' m 

답변

5

zsh을 들어 compdef 기능을 새로운 완성을 만들 수 있습니다.

기본 형식에서는 완료 기능을 단어와 연결합니다. zsh에는 이미 많은 내장 기능이 내장되어 있지만, 다시 사용할 수 있습니다. 예를 들어, 질문에서 m 함수 : 하나는 완성 기능에 정의되어있는 경우 문서 당으로

$ compdef _make m 

, 당신은 또한, 특정 서비스에 대한 완료를 정의 할 수 있습니다. 당신은 /usr/share/zsh/functions/Completion/Unix/ 기존 완료 구현을 참조 리눅스에

$ compdef _git gl=git-log 

수 있습니다 zsh을가 _git 완료와 함께 제공하고 이미 git-log 서비스를 정의로 다시 질문에서 gl 기능과 자동 완성 할 수있다. 완료 구현을 읽으면 정의 된 서비스를 볼 수 있습니다.