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
}
rmdir
, bukan untukmkdir
atautouch
._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.Jawaban:
Ini adalah bug yang dikenal. Lihat pertanyaan LP ini dan bug ini 1 2 .
Komentar ini tampaknya sudah diperbaiki. Jika Anda tidak bisa menunggu perbaikan untuk menetes ke saluran normal, edit
/etc/bash_completion
baris 1587, ubahdefault
kefilenames
(buat cadangan terlebih dahulu).sumber
/etc/bash_completion
baris 1587, ubahdefault
kefilenames
.Saya mengalami, dan menyelesaikan, masalah yang sama setelah menginstal Adobe Reader di Ubuntu 12.04.
Saya berkomentar
_filedir
blok/etc/bash_completion.d/acroread.sh
dan bekerja normal lagi.sumber
_filedir
blok (tepat di atas) memperbaikinya. Anda harus keluar atau menjalankan 'exec bash' di semua shell Anda untuk melihat efeknya, lihat pertanyaan ini .Saya memiliki masalah yang sama dan saya memperbaikinya dengan menghapus direktori /etc/bash_completion.d/, lalu instal ulang bash_completion. Saya kira file lama ada di direktori ini ... Semoga ini akan menyelesaikan masalah Anda juga.
sumber
bash-completion
, salah satu file yang tersisa/etc/bash_completion.d/
harus menjadi biang keladinya. Ituacroread.sh
dalam kasus saya - itu mendefinisikan ulang_filedir
.