항목을 숨기지 않도록 탭 완성을 수정하는 방법은 무엇입니까? process-qt.R reprocess-pinning.R

homebrew’ed zsh 4.3.12와 함께 Mac OS X에서 oh-my-zsh를 사용하고 있습니다. 나는 최근에 이상한 문제에 걸려 넘어졌다. 에서 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



답변

문제는 zstylefor matcher-list에 있습니다.

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

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

e:(기본 설정 대신은 r:) 문자열의 끝에 경기를 강제로.

옵션에 대한 자세한 내용은 ZSH : Completion Matching Control 문서 에서 찾을 수 있습니다 .


답변

커서를 어디에 두 었는지 알았습니까? 모든 파일은 .R로 끝나므로 가능한 제안을 자동으로 추가합니다.

자동 완성은 Tshepang에서 설명한대로 “두 끝”을 사용하고 있습니다.

.R 이름없이이 폴더에 파일을 놓으면 .R 비트가 사라지는 것을 볼 수 있습니다.

솔직히, 자동 완성은 실제로 맹목적인 디렉토리 가정이 아닌 “완료”할 것이 필요합니다.


답변

Gert가 수정에 적합 할 수 있습니다. 그러나 파일 목록이 불완전한 이유 (breakdowns.R 및 eventloop.R)는 해당 파일이 현재 작업 디렉토리에서 실행 가능으로 표시된 유일한 파일이기 때문입니다. “ls -l”로이를 확인하고 rwx와 같은 권한을 볼 수 있습니다. “./”가 없거나 PATH에 해당 디렉토리가 없으면이 두 파일도 나타나지 않을 것으로 예상됩니다.

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


답변