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
따라서 diff
diff에 두 번째 인수를 두 번째 파일로 제공할 수 있다는 사실을 인식하지 못하고 두 번째로 명령 옵션만 허용하는 것 같습니다.
무슨 일이 일어나고 있는지 또는 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
일반적으로 특정 명령에 대해 스마트 완성을 완전히 비활성화하도록 구성하는 쉬운 방법이 있습니까? 나는 compdef _files diff
이것을 했고 그 쉘에서는 작동했지만 이후의 새로운 쉘에서는 작동하지 않았습니다.
답변1
이는 oh my zsh의 버그로 인해 발생했으며 약간 수정되었습니다.2023년 1월 25일근데 또 깨졌어2023년 3월 3일
댓글을 추가했어요원래 질문이 회귀를 강조하고 로컬에서 직접 수정하려고 시도했지만 문제가 발생했습니다. 내 zsh 팀이 이 버그를 수정하면 이 답변을 업데이트하겠습니다.
답변2
문제는 oh-my-zsh
macOS 명령 alias diff='diff --color'
이 diff
이러한 플래그를 지원하지 않는다는 것입니다. 이렇게 하면 이를 볼 수 있습니다 /usr/bin/diff --help
.
따라서 색상 플래그는 실제로 첫 번째 파일 이름 매개변수 역할을 할 수 있습니다.
diff
해결 방법은 이 플래그를 지원하는 GNU를 설치하는 것입니다 color
. 양조:
brew install diffutils