
pytest에 대한 zsh 완성을 작성하고 싶습니다.
어디서부터 시작해야 하나요? 저는 oh-my-zsh를 사용하고 있습니다.
.zshrc에서:
fpath=($HOME/.mycompletions $fpath)
autoload -U compinit && compinit -u
$HOME/.mycompletions/_pytest에서:
#compdef pytest
_pytest()
{
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=(`pytestcomplete ${cur} 2>/dev/null`)
}
complete -o nospace -F _pytest py.test
여기까지가 맞나요?
pytestcomplete
이제 스크립트를 "그냥" 작성하면 됩니다 .
반환 값은 어떤 모습이어야 합니까? 완성된 부분을 스크립트에 어떻게 넘겨주나요?
즉, 사용자가 이 작업을 수행하면 py.test<TAB>
파일이 먼저 완료되어야 합니다. 이렇게 하면 py.test tests/my.test.py<TAB>
클래스 이름이 완성되어야 합니다. 이렇게 하면 py.test tests/my.test.py::TestClass<TAB>
메소드 이름이 완성되어야 합니다.
pytest에서 정보를 얻으려면 --collect-only
현재 유일한 문제는 zsh와 완료 스크립트 사이를 오가는 것입니다.
이 방법으로 할 수 있나요? 아니면 oh-my-zsh 플러그인을 작성해야 하나요?
답변1
이를 위해 자체 완성 함수를 작성할 필요는 없습니다. pytest
Bash 완성을 간단히 재사용할 수 있습니다 .
- 설치하다
argcomplete
:pip install argcomplete
- 다음을 다음 항목에 추가하세요
.zshrc
.autoload -Uz bashcompinit && bashcompinit eval "$(register-python-argcomplete pytest)"
- 쉘을 다시 시작하십시오.
- 완벽한!