ฉันกำลังใช้ bash และฉันสงสัยว่ามีปลั๊กอินใด ๆ ใน bash หรือ shell อื่น ๆ ซึ่งทำให้ฉันสามารถทำสิ่งนี้
cat tfnislong.txt
+ [tab]
เสร็จcat ThisFileNameIsSoLong.txt
เหมือนกับแท็บใน Sublime Text
ฉันกำลังใช้ bash และฉันสงสัยว่ามีปลั๊กอินใด ๆ ใน bash หรือ shell อื่น ๆ ซึ่งทำให้ฉันสามารถทำสิ่งนี้
cat tfnislong.txt
+ [tab]
เสร็จcat ThisFileNameIsSoLong.txt
เหมือนกับแท็บใน Sublime Text
คำตอบ:
ฉันรู้https://github.com/mgalgs/fuzzy_bash_completioncomplete
ซึ่งเป็นพวงของฟังก์ชั่นเปลือกใช้กับ
ฉันคิดว่าเราน่าจะทำได้ดีกว่านี้เล็กน้อย ถึงเวลาที่จะเปิด. bashrc หรือ. profile ของคุณ
เบ็ดพื้นฐานที่เราใช้คือ:
complete -o nospace -o filenames -F fuzzypath cd ls cat
ตัวเลือก -F หมายถึงใช้ฟังก์ชั่นเปลือกสำหรับแท็บเสร็จที่ตัวเลือกที่ตั้งอยู่ในCOMPREPLY
ตัวแปร ตัวอย่างเช่น:
ฟังก์ชั่น fuzzypath () { ถ้า [-z $ 2] แล้วก็ COMPREPLY = (`ls ') อื่น DIRPATH = `echo" $ 2 "| gsed 's | [^ /] * $ ||' ` BASENAME = `echo" $ 2 "| gsed 's |. * / ||' ' ตัวกรอง = `echo" $ BASENAME "| gsed 's |. | \ 0. * | g'` COMPREPLY = (`ls $ DIRPATH | grep -i" $ FILTER "| gsed" s | ^ | $ DIRPATH | g "`) Fi }
ที่DIRPATH
เป็นทุกอย่างก่อนที่ / ที่ผ่านมาบนเส้นทางของคุณที่คุณพิมพ์และกำลังBASENAME
เป็นที่ที่เคอร์เซอร์ของคุณในขณะนี้
FILTER
เป็นที่ซึ่งฟัสซีเนสเข้ามาโดยทั่วไปใช้BASENAME
และแทรกตัวอักษร.*
ระหว่างตัวละครทุกตัวเพื่อสร้างเรกซ์ฝอยของเรา
ส่วนที่เหลือเป็นเพียงการรวม regex กับ LS COMPREPLY
การผลิต find
คุณอาจพบสิ่งที่ฉลาดมากขึ้นที่จะทำที่นี่อาจจะมี
ฉันยังพบhttp://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.htmlเพื่อเป็นประโยชน์
คุณอาจพบว่ามีประโยชน์fzf มันเป็นตัวค้นหาฟัซซี่เอนกประสงค์ที่เขียนขึ้นในทับทิมที่สามารถใช้กับรายการสิ่งต่าง ๆ : ไฟล์กระบวนการประวัติคำสั่งกิ่งคอมไพล์ ฯลฯ
สคริปต์การติดตั้งจะตั้งค่าการCTRL-T
โยงคีย์สำหรับเชลล์ของคุณ GIF ต่อไปนี้แสดงวิธีการทำงาน
fzf
.. (tput sc) และหลังจากนั้นก็กู้คืนด้วยtput rc
..
หากต้องการไปพร้อมกับคำตอบอื่น ๆ ของคุณคุณอาจต้องการดู zsh มันใช้งานได้กับ bash ย้อนหลังเพื่อให้คุณสามารถใช้แทนการแทนที่ได้ แต่รองรับคุณสมบัติที่ขยายอย่างมีนัยสำคัญและหนึ่งในนั้นคือการทำให้แท็บบริบทรับรู้ได้รับการปรับปรุงอย่างมาก
zsh คำถามที่พบบ่อยเสร็จจะขยายในกรณีการใช้งาน แต่ฉันเชื่อว่าตามตัวอย่างของคุณคุณจะสนใจCOMPLETE_IN_WORD
ฟังก์ชั่นมากที่สุด มันไม่ได้เป็นพฤติกรรมที่ต้องการ แต่ใกล้เคียง ประเด็นหลักคือมีหลายวิธีที่จะขยายการทำงานพื้นฐานในวิธีที่เข้าถึงได้ง่ายกว่าการใช้ bash
นี่คือส่วนขยายการจับคู่แบบคลุมเครือที่จะประมาณสิ่งที่คุณต้องการโดยเฉพาะ การจับคู่ zsh-fuzzy
สำหรับแนวคิดบางอย่างคุณสามารถดูoh-my-zsh framework ที่ได้รับความนิยมซึ่งมีฟังก์ชั่นมากมายสำหรับการจัดการ zsh และขยายมัน มันเป็นมากกว่าที่คุณต้องการส่วนใหญ่ แต่ภายใต้ปลั๊กอินคุณจะสังเกตเห็นสคริปต์การทำให้สมบูรณ์อัตโนมัติสำหรับบทบาทที่หลากหลาย เพื่อให้ได้แนวคิดของความสามารถ
cat Th
+tab
?