У мене визначено пару функцій оболонки, .zshrc
які заощаджують при наборі тексту та дозволяють інтегруватись із екраном. Наприклад:
function s()
{
screen -t "$1" ssh "$@"
}
Однак, коли я використовую ці функції оболонки, я не можу скористатися вбудованими функціями завершення команд zsh. (У випадку SSH, автоматично заповнюючи імена хостів на основі відомих_хостів та 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' не має; замість спроби заповнити імена хостів, схоже, вона повертається до автоматичного завершення за замовчуванням, надаючи мені список файлів, коли я натискаю "вкладку". Чи є якась дивна поведінка в обробці завершення SSH, що означає, що мені потрібно зробити щось далі?