Sekme tamamlamayı harf yazmaktan daha çok kullanırım. Yazı yazdım ve bir sonraki aşamada devam edebilmem rm ~/De<TAB>için tamamlanacaktı rm ~/Desktop/.
Son zamanlarda, bu davranış değişti. Şimdi tamamlama gerçekleşir rm ~/Desktop<SPACE>, bu da devam etmek istersem geri dönüp boşluk bırakmam gerektiği anlamına gelir. Bu beni ağlatıyor.
Değişiklikler fonksiyonu bulunan görünmektedir _longopt()içinde /etc/bash_completionancak o bildiğim kadarıyla takip edebilirsiniz gibidir. Bu değişiklik kasıtlı mı ve eğer öyleyse, bunun için iyi olan nedir? Eski davranışı, eski kodu başka bir sistemden kopyalamak yerine, tercihen bir yapılandırma seçeneğiyle geri alabilir miyim?
Düzenleme: Referans işlevi.
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
_longopt()Fonksiyonunun gövdesini gönderebilir misin ?
readlineayarlara (size bir ~/inputrcdosya var mı?) Ve öğenin gerçek bir dizin olduğuna veya dizine bir işaret olduğuna bağlı olabilir.
.inputrcartık bu sistemde yok. (Bunlar günlerdi, geri al ve imleç anahtarlarını düzeltiyorlardı…) Ve tüm öğeler, dizin ya da dosya, sembolik bağlantı ya da bağlantı söz konusu olduğunda oluyor.
rmdirdeğil gibi komutlar için kullanışlıdır .mkdirtouch