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

435
woodstok

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

например:

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

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

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

3

1 ответ на вопрос

3
woodstok

Had to dig through the zshcompsys manual to find out the right commands

The below code at the end of ~/.zshrc works for me

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

The important flag here is the context -first- . As per zshcompsys man page

-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 
Спасибо, мы использовали это для интеграции zsh-autosuggesion с системой завершения: https://gist.github.com/olejorgenb/678ddc534c157ffb7c61151cf8eb8d03 olejorgenb 6 лет назад 0