อัพเดตรายการเสร็จสมบูรณ์แบบไดนามิกใน zsh


13

ฉันพบว่ารายการผลการ zsh ของการTabเสร็จสมบูรณ์มีประโยชน์มาก แต่ฉันต้องการปรับพฤติกรรมของพวกเขาเล็กน้อย:

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

มีวิธีใดบ้างที่จะบรรลุพฤติกรรมดังกล่าว


คุณสามารถเจาะลึกzshพฤติกรรมการปรับแต่งได้ จะเกิดอะไรขึ้นกันแน่? ในขณะที่คำถามนี้อ่านเหมือนที่คุณต้องการให้ตัวเลือกที่จะปรากฏในรายการสำหรับทุกการกดปุ่มหลังจาก TAB เริ่มต้น แต่นั่นจะไม่เสร็จสมบูรณ์จริง ๆ การกดปุ่มทุกครั้งควรทำตัวเหมือนกับว่าตามด้วย TAB หรือไม่? โปรดจำไว้ว่านี่อาจหมายถึงการถอยกลับเล็กน้อยสำหรับความสำเร็จที่ไม่ได้ตั้งใจ
peth

@ user112553 ตัวเลือกแรก: ในแง่นั้นจริง ๆ แล้วไม่ควรทำตัวเหมือนแท็บซ้ำ ฉันแค่ต้องการรายการคำแนะนำเพื่อปรับแบบไดนามิก
F30

คำตอบ:


2

วิธีหนึ่งที่อาจเสนอโซลูชันที่คุณต้องการคือincremental-complete-word:

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

โหลดนี้ funtion และผูกมัน-Ctrl X iตอนนี้คุณสามารถลอง:

> k^Xi
incremental (complete): -no prefix-

ในตัวอย่างkนี้พิมพ์ตัวอักษรตามด้วย Control-X i

> kil
incremental (complete): kill       

ฉันพิมพ์ilและตอนนี้มีหนึ่งเสร็จสิ้นไปได้ ( kill) หนึ่งสามารถยอมรับและกด Enter

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

โดยการพิมพ์Ctrl- Dzsh แสดงถึงความสำเร็จที่เป็นไปได้

จากzshcontrib(1):

incremental-complete-word
สิ่งนี้ช่วยให้การเติมคำสมบูรณ์ หลังจากที่เริ่มต้นคำสั่งนี้รายการของตัวเลือกเสร็จจะแสดงให้เห็นหลังจากที่ตัวละครทุกตัวที่คุณพิมพ์ที่คุณสามารถลบด้วยหรือ^H DELการกดย้อนกลับยอมรับความสำเร็จจนแล้วคุณจะกลับสู่การแก้ไขแบบปกติ (นั่นคือบรรทัดคำสั่งจะไม่ถูกเรียกใช้งานทันที) คุณสามารถTABทำสำเร็จตามปกติ ^G เพื่อยกเลิกกลับสู่สถานะเมื่อคุณเริ่มและ^Dเพื่อแสดงรายการการแข่งขัน

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