Tôi có một vài hàm shell được xác định trong .zshrc
đó giúp tiết kiệm việc nhập và cho phép tích hợp với màn hình. Ví dụ:
function s()
{
screen -t "$1" ssh "$@"
}
Tuy nhiên, khi tôi sử dụng các hàm shell này, tôi không thể tận dụng các tính năng hoàn thành lệnh được tích hợp sẵn của zsh. (Trong trường hợp SSH, tự động hoàn thành tên máy chủ dựa trên know_hosts và ssh_config). Cách ưa thích để kết nối với các cơ chế hoàn thành hiện có cho các lệnh tôi đã tạo trình bao bọc là gì?
BIÊN TẬP:
Cảm ơn Gilles cho câu trả lời của mình dưới đây. Sử dụng compdef dường như là cách để làm điều này, nhưng thú vị là nó dường như không hoạt động đồng đều. Trong trường hợp này, tôi có thiết lập sau:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Hoàn thành cho chức năng trình bao bọc của tôi 'm' hoạt động như mong đợi, tuy nhiên hoàn thành cho chức năng của tôi 's' thì không; thay vì cố gắng hoàn thành tên máy chủ, nó dường như quay trở lại tự động hoàn thành mặc định bằng cách cung cấp cho tôi danh sách các tệp khi tôi nhấn 'tab'. Có một số điều kỳ lạ trong cách xử lý hoàn thành SSH có nghĩa là tôi cần phải làm gì đó hơn nữa?