zsh 완성 목록 앞뒤에 고정된 텍스트 줄을 래핑하는 방법은 무엇입니까?

zsh 완성 목록 앞뒤에 고정된 텍스트 줄을 래핑하는 방법은 무엇입니까?

특히, (:completion:* 컨텍스트의) 모든 완성 목록 앞에 고정 문자열(지금은 "ABC"라고 가정)이 따라오도록 정렬하고 싶습니다.

여러 가지 방법을 시도했는데 이전 행은 얻을 수 있지만 다음 행은 얻을 수 없습니다. 가장 좋은 방법은

  1. _main_complete에서 배열 comppostfunc를 사용하세요. _message -r을 사용하여 라인을 인쇄하는 기능이 포함되어 있습니다. 그러나 comppostfun은 _main_complete의 끝에서 실행되지만 분명히 목록이 생성되기 전에 문자열의 끝이 아닌 시작을 제공합니다.

  2. 새 완성자(1을 반환하는 _complete 클론 및 _message만 실행하는 완성자)를 만듭니다. 아이디어는 _message 완성자를 마지막에 두는 것입니다. 어느 정도는 효과가 있지만다시문자열이 나타납니다시작완성된 목록.

  3. 레이블 순서 스타일을 사용하여 메시지를 끝에 넣으려면 1 또는 2를 조정하십시오. 이것은 작동하지 않습니다.

  4. 일반 작업(한 경우에는 _normal)을 수행하고 _message로 끝나는 _complete 완성자의 변형을 만듭니다. 다시 말하지만, 둘 다 약간이지만 항상 메시지를 먼저 전달합니다. 태그 순서를 사용해도 이 내용은 변경되지 않습니다.

뭔가 빠진 것 같은 느낌이 듭니다. 예를 들어, 여러 완성기의 출력을 함께 결합하는 완성기 스타일을 지정하는 방법이 있습니까? 완성기에서 여러 작업을 수행하면 완성 목록이 순서대로 생성되지 않는 이유는 무엇입니까? _message 출력을 마지막에 배치하는 태그 순서 스타일을 어떻게 얻을 수 있습니까?

답변1

tag-order스타일은 출력 순서를 변경하지 않습니다. 사용해야 할 것은 스타일입니다 group-order. 또한 시작 메시지와 종료 메시지는 서로 달라야 합니다 group-name. 바라보다http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Styles더 많은 정보를 알고 싶습니다.

관련 정보