Завершение ZSH для 30K вариантов
В моей работе у нас есть ~30K переменных управления процессом, к которым мы получаем доступ через сетевой протокол, который имеет удобные инструменты командной строки.
Я работаю над сценарием завершения zsh, который представит мне имя переменной и описание.
Это легко для небольшого количества вариантов.
compdef command
local -a var
var=('press1:Pressure 1' 'temp1: Temperature 1')
_describe 'var' var
Это не работает, когда у вас есть 30 тысяч переменных. Я написал сценарии, чтобы получить все 30K в файл:
# contents of file
press1:Pressure1
temp1:Temperature1
press_n:Pressure for nth
...
Тогда я могу сделать:
compdef command
local -a var
# I'm sure there's a zsh specific way to do this
var=($(cat var.list | tr "\n" " "))
_describe 'var' var
Я полагаю, я мог бы разбить 30K строк на несколько файлов. Мне нужно было бы выбрать правильный список для загрузки на основе первой буквы переменной.
Каков наилучший способ справиться с этим типом завершения? Является ли этот вариант использования злоупотреблением завершением ZSH? Есть ли способ лучше?