У меня есть несколько функций оболочки, определенных в моей, .zshrc
которые экономят при наборе текста и позволяют интеграцию с экраном. Например:
function s()
{
screen -t "$1" ssh "$@"
}
Однако, когда я использую эти функции оболочки, я не могу воспользоваться встроенными в zsh функциями завершения команд. (В случае SSH, автоматическое заполнение имен хостов на основе known_hosts и ssh_config). Какой предпочтительный способ подключиться к существующим механизмам завершения команд, для которых я создал оболочки?
РЕДАКТИРОВАТЬ:
Спасибо Жилю за ответ ниже. Использование compdef, кажется, способ сделать это, но интересно, что он не работает одинаково. В этом случае у меня есть следующие настройки:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Завершение для моей функции-оболочки 'm' работает как положено, однако завершение для моей функции 's' - нет; вместо того, чтобы пытаться завершить имена хостов, он возвращается к автозаполнению по умолчанию, предоставляя мне список файлов, когда я нажимаю «tab». Есть ли какая-то странность в том, как обрабатывается завершение SSH, что означает, что мне нужно что-то делать дальше?
источник
compdefas xterm cxterm uxterm xterm-color
.