명령줄 인수의 ZSH 자동 완성 디렉토리?

명령줄 인수의 ZSH 자동 완성 디렉토리?

일반 StackOverflow에서 다시 게시되었습니다...

저는 OSX에서 새로운 ZSH 변환자입니다(프롬프트의 git 상태가 이러한 도약을 이룬 주요 원동력이었습니다). 모든 일이 잘 진행되고 있는 것 같은데 BASH에 뭔가 빠졌네요..

BASH에서는 Symfony의 CLI 도구를 기반으로 구축된 CLI PHP 스크립트를 실행하겠습니다.

일반적으로 다음과 같은 명령을 실행합니다.

$> php doctrine --configuration=../conf/doctrine.xml migrations:migrate

BASH에서는 이 키를 사용하여 내용의 일부를 TAB입력하는 ../conf/doctrine.xml동안 목차를 완성 할 수 있습니다.

ZSH에서는 TAB디렉토리를 입력하는 동안 키를 눌러도 아무런 효과가 없습니다.

ZSH에 디렉터리처럼 보이는 거의 모든 것을 완료하려고 시도하는 동작을 활성화하도록 설정할 수 있는 구성이나 설정이 있습니까?

답변1

doctrine --configuration=Zsh는 완성을 선택하는 데 현명하려고 노력하지만 그 이후에 파일 이름을 완성해야 한다는 것을 아는 만큼 똑똑하지는 않습니다 . Bash는 이 명령을 올바르게 구문 분석할 만큼 똑똑하거나, 파일 이름 이외의 다른 작업을 완료하기에는 너무 멍청합니다.

에 대한 완성 함수를 작성할 수 있습니다 doctrine. 하지만 약간 진보된 형태입니다. 완성된 기능은 다소 신비스러운 경향이 있습니다. zsh의 대안인 오래되고 단순하지만 덜 강력한 완성 시스템 compctl(man 페이지에 설명되어 있음) 을 사용하여 완성기를 작성하는 것이 더 쉬울 수도 있습니다 zshcompctl.

bash 완료 기능이 있는 경우 이를 에 doctrine포함시켜 볼 수 있습니다 .autoload bashcompinit; bashcompinit~/.zshrczsh wiki의 bash에서 전환.

일부 키를 에 바인딩하는 것이 유용할 수 있습니다 _bash_complete-word. 이 위젯(대화형 명령)은 위젯을 호출한 키 시퀀스의 마지막 문자( /디렉터리, $매개변수 이름 등에 대해) 를 기반으로 몇 가지 내장된 완성 유형을 수행합니다. 예를 들어, bindkey '^X/' _bash_complete-wordyour에 포함시킨 ~/.zshrc다음 Ctrl+를 눌러 X /어떤 상황에서든 파일 이름을 완성하세요(파일 이름 앞의 구두점이 셸에서 단어 구분 기호가 아닌 경우 파일 이름 앞에 일시적으로 공백을 삽입해야 할 수도 있습니다).

관련 정보