항목을 숨기지 않도록 탭 완성을 수정하는 방법은 무엇입니까?

항목을 숨기지 않도록 탭 완성을 수정하는 방법은 무엇입니까?

저는 Mac OS X에서 oh-my-zsh와 homebrew zsh 4.3.12를 사용하고 있습니다. 최근에 이상한 문제를 발견했습니다. scripts/not-used여러 파일이 있습니다 .R.

breakdowns.R             eventloop.R              process-largeclients.R   process-qt.R
reprocess-pinning.R      calculate-qt-error.R     generate_decision_tree.R process-net.R
process-scalingexp.R

ls scripts/not-used/그러나 +를 시도하면 Tab첫 번째 완성은 커서 위치를 나타내는 ls scripts/not-used/_.R완성 입니다 _. 다시 누르면 Tab다음과 같은 이상한 결과가 나타납니다.

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

이 추악한(잘못된) 동작을 어떻게 취소할 수 있나요?

설정 옵션은 다음과 같습니다.

alwaystoend autocd autonamedirs autopushd cdablevars completeinword
correctall extendedglob extendedhistory noflowcontrol
histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify
incappendhistory
interactive login longlistjobs monitor promptsubst 
pushdignoredups pushdminus pushdsilent pushdtohome
sharehistory shinstdin zle

답변1

문제는 zstylefor matcher 목록에 있습니다.

다음을 추가하면 .zshrc문제가 해결됩니다.

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

e:(기본값 대신) r:문자열 끝까지 일치하도록 강제합니다.

옵션에 대한 자세한 내용은 다음에서 확인할 수 있습니다.ZSH: 완전한 일치 제어 문서

답변2

커서가 어디에 놓였는지 보셨나요? 모든 파일은 .R로 끝나므로 가능한 제안 사항이 자동으로 추가됩니다.

자동 완성 기능은 Tshepang이 설명한 대로 "Both Ends"를 사용합니다.

.R 이름이 없는 파일을 이 폴더에 넣으면 .R 비트가 사라진 것을 확인할 수 있습니다.

솔직히 자동 완성에는 실제로 블라인드 디렉토리 가정 대신 "완성"할 무언가가 필요합니다.

답변3

Gert는 아마도 이 문제를 해결하는 데 가장 적합한 사람일 것입니다. 그러나 파일 목록(breakdowns.R 및 eventloop.R)이 불완전한 이유는 이러한 파일이 현재 작업 디렉터리에서 실행 가능한 것으로 표시된 유일한 파일이기 때문이라고 생각됩니다. "ls -l"을 사용하여 이를 확인하고 rwx와 같은 권한을 볼 수 있습니다. PATH에 "./" 또는 해당 디렉토리가 명시적으로 없으면 해당 두 파일도 거기에 없을 것으로 예상됩니다.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R

관련 정보