Makefile
가 포함된 디렉토리 에 있을 때 make를 위해 zsh 완성을 사용합니다.
make <TAB>
두 가지 마감 세트를 수행합니다.
- Makefile의 대상
- 현재 디렉터리의 파일
나는 단지 1)
2)를 비활성화하는 방법은 무엇입니까?
_make
완성된 파일을 여기에 붙여넣었 습니다 .https://ctxt.io/2/AADge23ZFg
답변1
완료 상태는 에서 가져옵니다 _alternative 'targets:…' 'variables:…' '*:…'
.
이것_alternative
이 함수는 다음 중 선택 항목을 나열합니다.상표. 태그의 순서와 선택은 다음과 같습니다.구성된그리고tag-order
스타일. 스타일의 맥락은 다음과 같습니다 :completion::complete:make::
. 문서에서 이 문제를 해결할 수 있습니다(포함).zstyle
, 또는 ^X?
(_complete_debug
).
내가 이해한 바로는 대상 및 변수 이름만 완성하고 파일 이름은 완성하지 않으려면 다음과 같이 태그 순서를 설정할 수 있습니다.
zstyle ':completion::complete:make::' tag-order 'targets variables' -
그러나 실험을 통해 이것은 전혀 완성도를 제공하지 않으며 그 이유를 이해하지 못합니다.
그러나 실제로 작동하고 아마도 더 유용한 것은 대상 및 변수 이름의 우선 순위를 지정하도록 레이블 순서를 설정하는 것입니다. 그런 다음 일치하는 대상 또는 변수 이름이 없는 경우에만 파일 이름을 완성해 보십시오.make stuffTab
zstyle ':completion::complete:make::' tag-order 'targets variables'
또는 일치하는 대상이 없으면 변수를 무시하고 대상이나 변수가 일치하지 않으면 파일을 무시합니다.
zstyle ':completion::complete:make::' tag-order targets variables
make
(아, 그리고 완벽함을 위해 완전히 비활성화된 매개 변수를 사용 하여 모든 파일 완성을 사용할 수 있습니다 . 그러나 이렇게 하면 불행히도 다른 컨텍스트 문자열이 없는 zstyle ':completion::complete:make::' file-patterns ''
와 같은 항목에 대한 완성도 비활성화됩니다 .)make -f