Bash เติมข้อความอัตโนมัติ: ไฟล์รายการแรกจากนั้นวนรอบไฟล์เหล่านั้น


27

เป็นไปได้หรือไม่ที่จะกำหนดค่า bash ในลักษณะที่การเติมข้อความในแท็บแรกโดยอัตโนมัติจะแสดงรายการไฟล์ที่เป็นไปได้ทั้งหมด

ตัวเลือกทั้งสองนั้นแยกกันได้ง่ายและฉันสามารถผูกมันไว้กับกุญแจที่แตกต่างกันได้ แต่ตัวเลือกด้านบนนั้นสมบูรณ์แบบ แต่ฉันไม่สามารถหาอะไรเกี่ยวกับมันได้ในเน็ต


3
เป็นเวลานานแล้วที่ฉันใช้ ZSH แต่ฉันเชื่อว่าฟังก์ชันเติมข้อความอัตโนมัติของมันเป็นเช่นนี้
จอร์แดน

1
@ jordanm ดูเหมือนว่าจะเป็นตัวเลือกหากไม่มีสิ่งใดที่ใช้งานได้ แต่มันจะเกี่ยวข้องกับการอัปเดตทุกอย่างตั้งแต่. bashrc เป็นต้นไปจนถึง ZSH ที่เทียบเท่าซึ่งฉันอยากจะหลีกเลี่ยง
Voo

คำตอบ:


31

นี่ดูเหมือนใกล้เคียงกับสิ่งที่คุณต้องการ:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"

1
เกือบจะสมบูรณ์แบบนอกเหนือจากข้อบกพร่องเล็ก ๆ ที่มันยังเติมข้อความอัตโนมัติในแท็บแรกซึ่งอาจเป็นบิตที่น่ารำคาญถ้าฉันแค่พยายามที่จะคิดออกชื่อที่แน่นอน (เช่นฉันต้องลบตัวละครอีกเล็กน้อยถ้าฉันต้องการ เปลี่ยนไป) แต่ฉันยินดีที่จะอยู่กับมัน
Voo

1
วิธีนี้สามารถยกเลิกได้อย่างง่ายดาย?
dingalapadum

1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
จิมปารีส

13
@Voo เพิ่มบรรทัดที่สามbind "set menu-complete-display-prefix on"จะแสดงรายชื่อผู้สมัครในแท็บแรกโดยไม่ต้องทำให้สมบูรณ์อัตโนมัติ
Naitree

2
@Naitree ไม่สามารถโหวตข้อเสนอแนะของคุณได้มากพอ มันใช้งานได้และเป็นเช่นนั้นดีกว่าพฤติกรรมทุบตีเริ่มต้น ขอขอบคุณ.
JBeurer

1

นี่คือสิ่งที่ฉันใช้ เท่าที่ฉันสามารถบอกได้มันทำสิ่งที่คุณต้องการ

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

ใช้งานได้กับ Mac (10.13 & 10.14) และ Ubuntu (16.04 & 18.04)


0

คุณเคยคิดไหม มันถูกอ้างถึงที่ Superuser ...

[[ $- = *i* ]] && bind TAB:menu-complete

1
menu-completeเป็นเพียงครึ่งหนึ่งของคำถามที่ถาม ในฐานะที่เป็นคำถามว่า"[b] ตัวเลือก OTH เป็นเรื่องง่ายที่จะทำแยกต่างหาก"
jw013

ใช่ฉันรู้วิธีเปลี่ยนพฤติกรรมเป็นหนึ่งในสองตัวเลือก แต่นั่นเป็นส่วนที่ง่าย ปัญหาที่แท้จริงคือวิธีการรวมทั้งสองเข้าด้วยกัน
Voo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.