ฉันจะทำให้เสร็จ zsh ทำหน้าที่เหมือน bash เสร็จได้อย่างไร


18

ฉันเพิ่งแปลงจาก bash เป็น zsh (ซึ่งฉันใช้ "oh my zsh" ด้วย) แต่มีสิ่งหนึ่งที่ทำให้ฉันรำคาญ:

เมื่อฉันกดปุ่มแท็บการเติมข้อความอัตโนมัติครั้งแรกจะถูกกรอกโดยอัตโนมัติและคุณต้องวนไปมาตามความสำเร็จโดยกดปุ่มแท็บซ้ำ ๆ

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

ฉันพบว่าดีกว่าเพราะมันเร็วกว่าการพิมพ์กว่าจะเลือกเสร็จโดยการกดปุ่มแท็บซ้ำ ๆ

มีวิธีใดบ้างที่จะทำให้การเติมเต็ม zsh ทำตัวเหมือนทุบตีในเรื่องนี้ได้หรือไม่?

คำตอบ:


18
setopt noautomenu
setopt nomenucomplete

คุณต้องการทั้งคู่ หากคุณกดแท็บมากพอคุณจะได้รับรายการความสำเร็จ แต่จะไม่เพิ่มอักขระใด ๆ ลงไปในสิ่งที่คุณพิมพ์


4

ฉันไม่คิดว่าเป็นพฤติกรรมเริ่มต้น แต่คุณสามารถปิดได้โดยใช้:

setopt +o menucomplete

การตั้งค่าอื่น ๆ autolistที่มีผลต่อพฤติกรรมนี้ในรูปแบบที่แตกต่างกันรวมถึง: automenu, bashautolist, listambiguous, ดูส่วน "เสร็จสมบูรณ์" ของman zshoptionsเพื่อดูรายละเอียด คุณสามารถเพิ่มคำสั่งนี้ไปยัง~/.zshrcไฟล์ของคุณ

คุณสามารถกำหนดค่าสิ่งอื่น ๆ แบบโต้ตอบโดยทำ:

autoload -U compinstall
compinstall

และทำตามคำแนะนำและเมนู

ในทุบตีพฤติกรรมนี้จะถูกควบคุมโดยมีผลผูกพันTabไปcompleteหรือmenu-completeใน~/.inputrc:

"\C-i": complete   # do list completion

หรือจาก shell prompt หรือใน~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion

1
ความคิดเห็น meta: คุณได้รับอักขระ "แท็บ" เป็นอย่างไร
บุคคลที่ดี

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