zsh/oh-my-zsh에서 자동 완성 diff 명령이 작동하지 않습니다.

zsh/oh-my-zsh에서 자동 완성 diff 명령이 작동하지 않습니다.

MacOS에서는 제가 아는 한 어떠한 사용자 정의 없이 oh-my-zsh를 사용하고 있습니다.

자동 완성은 대부분의 경우 매우 잘 작동하며 매우 만족합니다. 그러나 어떤 이유에서 diff인지 명령이 다릅니다.

➜  ls file<TAB>
file1  file2
➜  diff file1 file<TAB>  # Rings bell and no completion
➜  diff file1 <TAB>  # Gives me a "-" completion
➜  diff file1 -<TAB>
-b  -- skip trailing white spaces
-c  -- output a context diff
-e  -- output an ed script
-f  -- output a reversed ed script
-r  -- recursively compare subdirectories

따라서 diffdiff에 두 번째 인수를 두 번째 파일로 제공할 수 있다는 사실을 인식하지 못하고 두 번째로 명령 옵션만 허용하는 것 같습니다.

무슨 일이 일어나고 있는지 또는 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

일반적으로 특정 명령에 대해 스마트 완성을 완전히 비활성화하도록 구성하는 쉬운 방법이 있습니까? 나는 compdef _files diff이것을 했고 그 쉘에서는 작동했지만 이후의 새로운 쉘에서는 작동하지 않았습니다.

답변1

이는 oh my zsh의 버그로 인해 발생했으며 약간 수정되었습니다.2023년 1월 25일근데 또 깨졌어2023년 3월 3일

댓글을 추가했어요원래 질문이 회귀를 강조하고 로컬에서 직접 수정하려고 시도했지만 문제가 발생했습니다. 내 zsh 팀이 이 버그를 수정하면 이 답변을 업데이트하겠습니다.

답변2

문제는 oh-my-zshmacOS 명령 alias diff='diff --color'diff이러한 플래그를 지원하지 않는다는 것입니다. 이렇게 하면 이를 볼 수 있습니다 /usr/bin/diff --help.

따라서 색상 플래그는 실제로 첫 번째 파일 이름 매개변수 역할을 할 수 있습니다.

diff해결 방법은 이 플래그를 지원하는 GNU를 설치하는 것입니다 color. 양조:

brew install diffutils

관련 정보