낙타가 일치하는 디렉토리 이름을 자동 완성하도록 zsh를 어떻게 구성 할 수 있습니까?


9

Eclipse와 Resharper는 파일을 탐색하는 좋은 방법이 있습니다.

현재 디렉토리에 다음 폴더 (또는 파일)가있는 경우

MyReallyLongName
MyReallyLongAndFunName
MyReallyLongAndNotReallyFunName

일식에서 대문자 만 사용하여 탐색 할 수 있습니다. 해당하는 zsh에서 다음을 입력 할 수 있기를 원합니다.

cd MRLAFN (탭) (Enter)

MyReallyLongAndFunName한 단계 로 들어가려면

지금 zsh를 사용하여 입력하려면 다음을 입력해야합니다. My(Tab)Fun(Tab)(Enter)

답변:


6

이것은 나를 위해 작동합니다 :

zstyle ':completion:*' matcher-list 'r:[^A-Z0-9]||[A-Z0-9]=** r:|=*' 

그런 다음 테스트 디렉토리 에서이 작업을 수행 할 수 있습니다.

touch MyReallyLongName MyReallyLongAndFunName MyReallyLongAndNotReallyFunName
ls MRLANRFN<TAB>
ls MyReallyLongAndNotReallyFunName

Zshell 사용자 안내서의 팁에서 함께 정리했습니다 .


이 확장명 (파일, 폴더)을 어디에 두어야하는지 설명해 주시겠습니까? zsh-completions 프로젝트 에 추가하고 싶을 수도 있습니다 .
JJD

~ / .zshrc에 추가
Cody

예상대로이 꽤와 함께 작동하지 않습니다 AbcAde AdFg HlAkAd, ls AA<TAB>에 완료를 Ad내가 AbcAde을 기대하면서.
arekolek

@arekolek "광고"는 부분 완료입니다. zsh 구성에 따라 TAB을 다시 누르면 일치하는 모든 파일이 표시됩니다. 세 파일 모두를 포함해야합니다. 그런 다음 메뉴를 선택하거나 파일 이름을 더 입력하여 완성자를 안내 할 수 있습니다.
phord

@arekolek 죄송합니다-잘못 읽었습니다. 거기에서 어떻게 광고를 보았는지 잘 모르겠습니다. 나는 그것이 부분적으로 모호한 것이라고 생각했지만, 당신의 예에서 말하기는 어렵습니다. 두 번째 탭이 더 이상 결과를 생성합니까?
phord

2

나는 다음 내용 _camel_case으로 내 개인 ~/.zsh/functions folder( $fpath변수에 있는 모든 폴더를 가져 가라)에 파일 을 추가하여 "정말 잘 작동"하도록했습니다 .

#autoload

[[ -z "$PREFIX" ]] && return 1

relpath=$(dirname $PREFIX)

[[ -e $relpath ]] || return 1

files=$(ls $relpath)

regex=$(echo $(basename $PREFIX) | sed -e 's/\([A-Z][^A-Z]*\)/\1[^A-Z]+/g')

correctedfiles=($(echo $files | grep -P $regex | sed -e :a -e '$!N;s/\n/ /;ta'))

results=($(for file in $correctedfiles; do echo "$relpath/$file"; done))

compadd -U -f -- $results

그런 다음 ~ / .zshrc에 다음 줄을 추가했습니다.

zstyle ':completion:*' completer _complete _correct _path_files _camel_case

zsh의 완성 시스템에 대해 너무 많이 알지 못하기 때문에 이것은 아마도 "좋은"해결책이 아닐 것입니다.


mkdir AaBbCcDd cd ABCD (탭) => cd ./ 즉. 자동 완성 실패
Rohit Manokaran
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.