.zshrc
Yazarken kaydettiğim ve ekranla entegrasyona izin veren benim tanımlanmış kabuk işlevlerim var . Örneğin:
function s()
{
screen -t "$1" ssh "$@"
}
Ancak, bu kabuk işlevlerini kullandığımda, zsh'ın yerleşik komut tamamlama özelliklerinden yararlanamıyorum. (SSH söz konusu olduğunda, bilinen_anahtarlar ve ssh_config'ye dayalı olarak ana bilgisayar adlarını otomatik olarak tamamlama). Paketleyicileri oluşturduğum komutlar için mevcut tamamlama mekanizmalarına bağlanmanın tercih edilen yolu nedir?
DÜZENLE:
Gilles'e aşağıdaki cevabı için teşekkürler. Compdef kullanmak bunu yapmanın bir yolu gibi gözüküyor, ancak ilginç bir şekilde düzgün çalışmıyor gibi görünüyor. Bu durumda, aşağıdaki kuruluma sahibim:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
Sarıcı işlevim 'm' için tamamlama beklendiği gibi çalışıyor ancak işlevim 's' için tamamlama çalışmıyor; ana bilgisayar adlarını tamamlamaya çalışmak yerine, 'sekme' tuşuna bastığımda bana bir dosya listesi vererek varsayılan otomatik tamamlamaya geri dönüyor gibi görünüyor. SSH tamamlamasının ele alınmasında bazı tuhaflıklar var mı, bu da başka bir şey yapmam gerektiği anlamına mı geliyor?