Добавить строки в zsh tab для всех команд и аргументов

Я хочу добавить ключевые слова foo а также bar быть добавленным к результатам автозаполнения для любой команды или аргумента.

например:

cd <TAB> должен дать foo и bar в предложениях в дополнение к существующим дополнениям

blah <TAB> следует дать foo и bar в предложениях в дополнение к существующим дополнениям.

Статьи о завершении zsh, которые я читал, упоминают методы упоминания о добавлении дополнений к определенным командам, но ни в одной не упоминается, как добавить набор слов в глобальные дополнения (или, если существует глобальный список завершения, который всегда существует)

1 ответ

Решение

Пришлось копаться в руководстве zshcompsys, чтобы узнать правильные команды

Приведенный ниже код в конце ~/.zshrc работает для меня

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

Важным флагом здесь является контекст -first-, Согласно справочной странице 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
Другие вопросы по тегам