Saya menggunakan pelengkap tab lebih dari mengetik huruf. Saya biasa mengetik rm ~/De<TAB>
dan itu akan selesai rm ~/Desktop/
sehingga saya bisa melanjutkan ke tingkat berikutnya.
Baru-baru ini, perilaku itu berubah. Penyelesaian sekarang menghasilkan rm ~/Desktop<SPACE>
, yang berarti saya harus mundur dan mengetik garis miring jika saya ingin melanjutkan. Ini membuatku menangis.
Perubahan tampaknya berada dalam fungsi _longopt()
di /etc/bash_completion
, namun yang sejauh yang saya bisa mengikuti. Apakah perubahan ini disengaja, dan jika demikian, apa gunanya hal itu? Bisakah saya mengembalikan perilaku lama, lebih disukai dengan opsi konfigurasi daripada hanya menyalin kode lama dari beberapa sistem lain?
Sunting: Fungsi untuk referensi.
_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()
?
readline
pengaturan (apakah Anda memiliki ~/inputrc
file?) Dan pada kenyataan bahwa item tersebut adalah direktori nyata atau symlink ke direktori.
.inputrc
sistem ini lagi. (Itu adalah hari-hari, memperbaiki backspace dan tombol kursor ...) Dan itu terjadi untuk semua elemen, direktori atau file, symlink atau tidak.
rmdir
, bukan untukmkdir
atautouch
.