zsh에는 상황 인식 완료를 수행하는 명령줄 탭 완성 기능이 있으므로 다음을 수행할 수 있습니다.
# Good:
$ wget g<tab> # becomes:
$ wget gopher://
$ wget --hea<tab> # becomes:
$ wget --header=
나는 이 기능을 좋아하지만 zsh가 다른 것이 더 적절하다고 생각하는 상황에서 파일 이름을 완성하지 못하는 경우가 있습니다.
# Bad:
$ file vs-debug.apk
vs-debug.apk: Zip archive data, at least v2.0 to extract
$ adb push v<tab> # becomes:
$ adb push version
(기본 위젯) ^I
에 바인딩했습니다 . expand-or-complete
내가 원하는 것은 필터링되지 않은 파일 이름 확장을 수행하는 다른 키를 갖는 것입니다. 예를 들면 다음과 같습니다.
# Desired behaviour:
$ adb push v<shift-tab> # would become:
$ adb push vs-debug.apk
난 아무것도 못 봤어자쉴러(1)잘 맞는 것 같았지만 다음과 같은 다른 위젯을 사용해 보았습니다.
expand-or-complete-prefix
menu-expand-or-complete
expand-cmd-path
expand-word
상황 인식 완료를 잃고 싶지 않습니다. 필터링되지 않은 파일 이름 확장/완성을 수행하기 위해 대체 키 바인딩을 사용하는 방법에 대한 아이디어가 있습니까?
저는 zsh 5.0.2(x86_64-apple-darwin12.4.0) 및 zsh 4.3.17(i686-pc-linux-gnu)을 사용하고 있습니다.
답변1
내장된 위젯은 없지만 위젯을 정의하는 것은 쉽습니다. 나는 당신이 "새로운 스타일" 완성 시스템(에 의해 로드됨 compinit
)을 사용하고 있다고 가정합니다.
_complete_files () {
eval "$_comp_setup"
_main_complete _files
}
compdef -k _complete_files complete-word '^X/'
완료 기능은 zsh 배포판에 정의된 기능을 따릅니다 Completion/Base
. 이것compdef
내장은 함수를 완성 위젯으로 선언하고 이를 키에 바인딩합니다.
답변2
더 나은 접근 방식은 zsh가 적절한 완료를 수행하도록 하는 것입니다. 보세요zsh 완료. 다양한 프로그램의 총집합입니다. 완성된 것도 있습니다 adb
.