Saya memiliki beberapa fungsi shell yang didefinisikan pada saya .zshrc
yang menghemat mengetik dan memungkinkan integrasi dengan layar. Sebagai contoh:
function s()
{
screen -t "$1" ssh "$@"
}
Namun, ketika saya menggunakan fungsi-fungsi shell ini, saya tidak bisa memanfaatkan fitur penyelesaian perintah bawaan zsh. (Dalam hal SSH, secara otomatis melengkapi nama host berdasarkan known_hosts dan ssh_config). Apa cara yang disukai untuk menghubungkan ke mekanisme penyelesaian yang ada untuk perintah yang saya buat untuk pembungkus?
EDIT:
Terima kasih kepada Gilles untuk jawabannya di bawah ini. Menggunakan compdef tampaknya menjadi cara untuk melakukan ini, tetapi menariknya tampaknya tidak berfungsi secara seragam. Dalam hal ini, saya memiliki pengaturan berikut:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Penyelesaian untuk fungsi pembungkus saya 'm' berfungsi seperti yang diharapkan, namun penyelesaian untuk fungsi saya 'tidak berfungsi; daripada mencoba untuk menyelesaikan nama host, tampaknya kembali ke pelengkapan otomatis default dengan memberikan saya daftar file ketika saya menekan 'tab'. Apakah ada keanehan dalam cara penyelesaian SSH ditangani yang berarti saya perlu melakukan sesuatu lebih lanjut?
sumber
compdefas xterm cxterm uxterm xterm-color
.