Использование автозаполнения zsh для псевдонимов

Одним из семейств инструментов для этого является семейство UCSPI-SSL. Пакет ucspi-ssl Уильяма Бакстера породил пакет ucspi-ssl Скотта Гиффорда, который породил пакет ucspi-ssl Эрвина Хоффмана. В каждом из них вы запускаете свою программу с sslserver , которая обрабатывает прием входящих соединений, квитирование SSL и шифрование / дешифрование данных, а ваша программа просто передает открытый текст через стандартный ввод и вывод, как обычный инструмент.

sslsvd Геррита Пейпа, один из инструментов в наборе инструментов ipsvd, выполняет аналогичную работу.

Дополнительная литература

  • Джонатан де Бойн Поллард (2015). « Программное обеспечение ». Генератор клиент-серверного программного интерфейса UNIX . Часто задаваемые ответы.
  • sslserver . UCSPI-SSL. 2015. Суперскрипт.
  • sslsvd . ipsvd. Геррит Папе.
  • sslio . ipsvd. Геррит Папе.

3
07.03.2018, 17:45
3 ответа

Если вы откроете файл, содержащий определение функции автозагрузки для git completion:
В моей системе ubuntu это:

/usr/share/zsh/functions/Completion/Unix/_git

в верхней части файла вы увидите #compdef объявление

#compdef git git-cvsserver git-receive-pack git-upload-archive git-upload-pack git-shell gitk tig

вы можете попробовать добавить свои псевдонимы к #compdef определению, например,

#compdef git git-cvsserver git-receive-pack [...] tig gch grb
                                                      ^^^ ^^^

Затем запустите новый shell, чтобы загрузить эту новую директиву.
Затем попробуйте вызвать завершение.

What is /usr/share/zsh/functions/Completion/Unix/_git?

Это файл, который содержит автозагружаемую "функцию", определяющую поведение завершения для всех команд, определенных в директиве #compdef, в данном случае семейства команд git. Он находится в fpath и автозагружается compinit при инициализации системы завершения.

Что такое #compdef ?

из man zshcompsys

#compdef name ... [ -{p|P} шаблон ... [ -N имя ... ] ]
Файл будет сделан автозагружаемым, и определенная в нем функция будет вызываться при заполнении имен, каждое из которых либо является имя команды, аргументы которой должны быть заполнены, либо один из специальных контекстов в форме -context-, описанных ниже.

1
27.01.2020, 21:30

Я делал что-то похожее. Вы используете oh-my-zsh? Если да, убедитесь, что вы включили плагин zsh-completions в вашем .zshrc файле. Я бы также рекомендовал плагин zsh-autosuggestions.

После этого вам нужно добавить следующее в файл .zshrc (если его там еще нет)

fpath=(~/.zsh/completions $fpath)
autoload -U compinit && compinit
0
27.01.2020, 21:30

У меня была такая же проблема. Вы должны проверить, установлена ​​ли опция completealiases. Что он делает, так это предотвращает внутреннюю замену псевдонимов до попытки завершения. В моем случае удаление setopt completealiasesиз моего .zshrc решило проблему. Вы можете попробовать unsetopt completealises, если о -мой -zsh устанавливает его.

10
01.05.2020, 09:51

Теги

Похожие вопросы