업데이트 3나는 이 성가신 자동 완성 옵션이 실제로는사용자 이름. 즉, /etc/passwd
_kadmin_admin 및 _kadmin_changepw와 같은 사용자와 밑줄로 시작하는 다른 많은 사용자가 있습니다. 이는 OSX에만 해당될 수 있습니다.
Oh-my-zsh는 다른 일치 항목을 찾을 수 없을 때 자동으로 이러한 사용자 이름을 완성합니다. 의 "지루한 사용자를 완료하지 마세요" 목록에 이러한 사용자 이름을 추가하려고 시도했지만 ~/.oh-my-zsh/lib/completion.zsh
작동하지 않았습니다. 왜인지 모르겠어요?
oh-my-zsh가 사용자 이름을 자동으로 완성하지 못하게 하는 방법이 있나요?
ZSH 또는 oh-my-zsh의 이상한 동작으로 인해 좌절감을 느끼고 있습니다. 이 문제의 원인이 무엇인지 잘 모르겠습니다.
자동 완성 기능이 내가 예상하지 못한 이상한 디렉토리를 검색하는 것 같습니다. 그것들은 일부 SVN 디렉토리인 것 같습니다. 나는 그것들에 대해 아무것도 모르고 왜 경로에 있는지도 모릅니다. (저는 SVN을 사용하지도 않습니다)
이 동작은 현재 디렉터리에 다른 일치 항목이 없는 경우에만 발생하는 것으로 보입니다. 그러면 내가 모르는 다른 경로를 찾아야 합니다.
예:
참고: 내 홈 디렉터리에 일치하는 항목이 없습니다.mi
→ ~ cd mi<tab>
→ ~ cd _kadmin
즉 , 왜 해당 디렉토리 mi
와 _kadmin
일치하는지 모르겠습니다.
실제로 해당 디렉터리로 변경하려고 하면 어쨌든 오류가 발생합니다(전체 디렉터리 이름이 아니기 때문입니다).
→ ~ cd _kadmin
cd:cd:10: no such file or directory: _kadmin
계속 누르면 <tab>
전체 디렉토리 이름과 일치합니다.
→ ~ cd mi<tab><tab><tab>
→ ~ cd kadmin_admin
→ ~_svn
→ ~_svn pwd
/var/empty
거기서 무슨 일이 일어났는지 모르겠어요. kadmin_admin이 무엇인지 모르겠습니다. 이제 디렉토리 이름을 변경할 때 디렉토리 이름을 얻고 ~_svn
다음을 PWD
표시하는 이유는 무엇입니까?/var/empty
이것이 나의 길입니다:
/Users/asgeo1/.rvm/gems/ruby-1.9.3-p194/bin:/Users/asgeo1/.rvm/gems/ruby-1.9.3-p194@global/bin:/Users/asgeo1/.rvm/rubies/ruby-1.9.3-p194/bin:/Users/asgeo1/.rvm/bin:/usr/local/php54/bin:/Users/asgeo1/Projects/dotfiles/bin:/Applications/Postgres.app/Contents/MacOS/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin
나는 거기에서 명백한 것을 볼 수 없습니다.
누군가 이것에 대해 좀 밝혀주세요. 정말 실망스럽네요!
편집하다:누군가 이전에 비슷한 문제를 겪은 것 같습니다. 중지 탭 완료 프롬프트 "messagebus" 그러나 거기에는 대답이 없습니다 :(
고쳐 쓰다:이것은 oh-my-zsh 애플리케이션의 cd 기능입니다:
→ ~ which cd
cd () {
if [[ "x$*" = "x..." ]]
then
cd ../..
elif [[ "x$*" = "x...." ]]
then
cd ../../..
elif [[ "x$*" = "x....." ]]
then
cd ../../..
elif [[ "x$*" = "x......" ]]
then
cd ../../../..
else
builtin cd "$@"
fi
}
답변1
_kadmin
kadmin
아마도 디렉토리가 아닌 도구의 전체 기능일 것입니다 . zsh
찾을 수 없는 명령, 디렉터리 또는 유효하고 알려진 명령 인수 완성을 완료 하려고 하면 가능한 확장 후보로 완성 기능을 제공하기 시작합니다. 기본적으로 zsh
다수의 완성 프로그램이 함께 제공되며 그 중 다수는 필요하지 않을 수도 있습니다. AIX, BSD, Cygwin, 다양한 Linux 배포판 등을 위한 번들이 있으며 모두 읽고 쉘에 설치합니다. zsh
찾을 수 없는 것을 확장하려고 하면 설치된 모든 완성 기능을 제공할 수 있습니다.
zsh
다음 파일에 넣어서 더 완전한 기능을 제공하지 않도록 구성 할 수 있습니다 ~/.zshrc
.
zstyle ':completion:*:functions' ignored-patterns '_*'
파일을 다시 로드하면 아직 설치되지 않은 도구에 대한 완성 기능이 더 이상 제공되지 않습니다. zshcompsys
(많은) 자세한 내용은 맨페이지를 확인하세요 .
편집하다 업데이트 3에 답장하기
_kadmin
실제 사용자 계정인 경우 zsh
완성시 제공하지 않도록 구성할 수 있습니다. 접근 방식은 쉘이 고려하기를 원하는 사용자 계정을 나열하는 것으로 보이며, 이는 나열된 사용자에게만 부여되는 이름을 제한합니다. 그 zstyle
줄은 다음과 같다:
zstyle ':completion:*' users asgeo1 root
태그 뒤에는 사용자 수를 얼마든지 나열할 수 있다고 생각합니다 users
. 그런 다음 쉘은 해당 사용자의 홈 디렉토리만 cd
기능 또는 내장에 대한 가능한 완성으로 제공합니다.
무시 모드에서 파일에 사용자 이름을 추가하는 것이 작동하지 않는 이유를 모르겠습니다 completion.zsh
. 변경한 후 구성을 다시 로드하고 있습니까?