Столкнулся со следующей ситуацией. У меня есть записи автозаполнения, подобные этим:
server:install
server:lint
...
Они должны быть завершены с помощью zsh. На самом деле мой метод завершения работает довольно хорошо, пока я заменяю двоеточия символами подчеркивания или чем-то другим, поскольку ZSH (или, лучше, функция _describe) будет использовать двоеточия в качестве разделителя.
Вы можете увидеть это в этом примере:
local -a subcmds topics
subcmds=('c:description for c command' 'd:description for d command')
topics=('e:description for e help topic' 'f:description for f help topic')
_describe 'command' subcmds -- topics
Однако это не то, чего я хочу. Я действительно хочу, чтобы эти двоеточия были в записях автозаполнения.
Итак, мой вопрос: могу ли я как-то избежать двоеточия, чтобы ZSH заметил, что мое двоеточие не является разделителем для описания, или изменить разделитель на что-то отличное от двоеточия?
На данный момент завершение выглядит так:
#compdef mycmd
local -a completions
completions=$(complete_me 2>/dev/null)
result=$(echo "$completions" | sed "s/:/_/g") # This line should be removed
lines=("${(f)result}")
_describe 'command' lines
Все это более или менее скопировано вместе с разных сайтов. Так что, наверное, я просто пропустил довольно простой вариант - но я просто не могу его найти -.-.
Может кто-то помочь мне с этим?
Спасибо, Матиас