ฉันใช้ความสมบูรณ์ของแท็บมากกว่าการพิมพ์ตัวอักษร ฉันเคยพิมพ์rm ~/De<TAB>
และมันจะเสร็จสมบูรณ์เพื่อrm ~/Desktop/
ให้ฉันสามารถดำเนินการต่อในระดับต่อไป
เมื่อเร็ว ๆ นี้พฤติกรรมนั้นเปลี่ยนไป ตอนนี้การเสร็จสมบูรณ์ให้ผลrm ~/Desktop<SPACE>
ซึ่งหมายความว่าฉันต้องถอยกลับและพิมพ์เครื่องหมายทับหากฉันต้องการดำเนินการต่อ นี่ทำให้ฉันร้องไห้
การเปลี่ยนแปลงดูเหมือนจะอยู่ในฟังก์ชั่น_longopt()
ใน/etc/bash_completion
แต่ก็เท่าที่ฉันสามารถติดตาม การเปลี่ยนแปลงนี้ตั้งใจหรือไม่และหากเป็นเช่นนั้นจะมีผลดีกับอะไร? ฉันสามารถใช้พฤติกรรมเก่า ๆ ได้หรือไม่โดยเลือกใช้ตัวเลือกปรับแต่งแทนการคัดลอกรหัสเก่ามาจากระบบอื่นหรือไม่?
แก้ไข: ฟังก์ชั่นสำหรับการอ้างอิง
_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
การตั้งค่า (คุณมี~/inputrc
ไฟล์หรือไม่) และความจริงที่ว่ารายการนั้นเป็นไดเรกทอรีจริงหรือ symlink ไปยังไดเรกทอรี
.inputrc
ระบบนี้อีกต่อไป (สิ่งเหล่านี้คือวันที่แก้ไขแบ็คสเปซและปุ่มเคอร์เซอร์…) และมันเกิดขึ้นกับองค์ประกอบไดเรกทอรีหรือไฟล์ symlink ทั้งหมดหรือไม่
rmdir
ไม่ได้สำหรับการหรือmkdir
touch