Mam kilka zdefiniowanych funkcji powłoki, .zshrc
które oszczędzają na pisaniu i umożliwiają integrację z ekranem. Na przykład:
function s()
{
screen -t "$1" ssh "$@"
}
Jednak kiedy używam tych funkcji powłoki, nie mogę skorzystać z wbudowanych funkcji uzupełniania poleceń zsh. (W przypadku SSH, automatyczne uzupełnianie nazw hostów na podstawie znanych_hostów i ssh_config). Jaki jest preferowany sposób podłączenia istniejących mechanizmów uzupełniania poleceń, dla których utworzyłem opakowania?
EDYTOWAĆ:
Dzięki Gillesowi za jego odpowiedź poniżej. Sposobem na to jest użycie compdef, ale co ciekawe, wydaje się, że nie działa ono jednolicie. W takim przypadku mam następującą konfigurację:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Uzupełnianie mojej funkcji opakowania „m” działa zgodnie z oczekiwaniami, jednak uzupełnianie mojej funkcji „s” nie; zamiast próbować uzupełnić nazwy hosta, wydaje się, że wraca do domyślnego autouzupełniania, udostępniając mi listę plików, gdy kliknę „tab”. Czy jest jakiś dziwny sposób w obsłudze zakończenia SSH, co oznacza, że muszę zrobić coś dalej?
źródło
compdefas xterm cxterm uxterm xterm-color
.