Dodaj ciągi do wypełnienia karty zsh dla wszystkich poleceń i argumentów

3

Chcę dodać słowa kluczowe foo i bar do dodania do wyników automatycznego uzupełniania dla dowolnego polecenia lub argumentu.

na przykład:

cd <TAB> powinien dać foo i pasek w sugestiach oprócz istniejących uzupełnień

blah <TAB> powinien dać foo i pasek w sugestiach oprócz istniejących uzupełnień.

Artykuły o ukończeniu zsh, które czytałem, wspominają o metodach dodawania uzupełnień do określonych poleceń, ale żaden nie wspomina, jak dodać zestaw słów do uzupełnień globalnych (lub czy istnieje globalna lista uzupełnień, która zawsze istnieje)

woodstok
źródło

Odpowiedzi:

3

Musiałem przekopać się przez podręcznik zshcompsys, aby znaleźć odpowiednie polecenia

Poniższy kod na końcu ~ / .zshrc działa dla mnie

function _my_completions() {
  local -a mywords
  mywords=( foo bar )
  compadd -a mywords
}
compdef _my_completions -first-

Ważną flagą jest tutaj kontekst -first- . Jak na stronie podręcznika użytkownika zshcompsys

-first-
     This is tried before any other completion function.  The function called may set the _compskip parameter 
     to one of various values: all: no further completion is attempted; a string containing the 
     substring patterns: no pattern completion functions will be called; a string containing default: the
     function for the `-default-' context will not be called, but functions defined for commands will
woodstok
źródło
Dzięki, użyliśmy tego do zintegrowania zsh-autosuggesion z systemem uzupełniania: gist.github.com/olejorgenb/678ddc534c157ffb7c61151cf8eb8d03
olejorgenb