zsh make 완료: Makefile의 목표만 완료합니다.

zsh make 완료: Makefile의 목표만 완료합니다.

Makefile가 포함된 디렉토리 에 있을 때 make를 위해 zsh 완성을 사용합니다.

make <TAB>

두 가지 마감 세트를 수행합니다.

  1. Makefile의 대상
  2. 현재 디렉터리의 파일

나는 단지 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

관련 정보