ฉันกำลังใช้menu select
พฤติกรรมในzsh
ซึ่งจะเรียกเมนูด้านล่างเคอร์เซอร์ที่คุณสามารถดูความเป็นไปได้ต่างๆ ตัวเลือก. zshrc ที่ฉันตั้งไว้สำหรับสิ่งนี้คือ
zstyle ':completion:*' menu select=2
ตามค่าเริ่มต้นการกดReturn
เพื่อเลือกความเป็นไปได้ในเมนูนี้จะทำให้คำสมบูรณ์เท่านั้น - ไม่ได้ส่งคำสั่งจริง ตัวอย่างเช่นฉันอาจได้รับเมนูเช่นนี้
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
การกดReturn
ที่นี่จะส่งผลให้
~ % cd Desktop/
จากนั้นผมก็ต้องกดสองเวลาในการส่งจริงคำสั่งReturn
ฉันสามารถปรับเปลี่ยนพฤติกรรมนี้เพื่อให้การกดReturn
ทั้งสองเลือกความสมบูรณ์และส่งคำสั่งโดยทำสิ่งนี้
bindkey -M menuselect '^M' .accept-line
อย่างไรก็ตามมีปัญหากับเรื่องนี้: บางครั้งฉันต้องกรอกไฟล์หรือไดเรกทอรีโดยไม่ต้องส่งคำสั่ง ตัวอย่างเช่นฉันอาจต้องทำln -s Desktop Desktop2
- ด้วยbindkey
พฤติกรรมนี้การพยายามทำให้เดสก์ท็อปเสร็จสมบูรณ์จะส่งผลให้ln -s Desktop/
ถูกส่งเป็นคำสั่งและแน่นอนว่าฉันไม่ต้องการสิ่งนั้น
ฉันรู้ว่าเพียงแค่กดปุ่มเว้นวรรคจะให้ฉันขึ้นกับคำสั่ง แต่ตอนนี้มันเป็นนิสัย
ได้รับนี้มีวิธีที่จะทำให้มันมีเพียงบางคำสั่งให้คุณกดReturn
หนึ่งครั้ง (เช่นcd
) แต่คำสั่งอื่น ๆทั้งหมดต้องกดมันสองครั้ง?
.zshrc
ไฟล์ไม่อนุญาตให้คุณทำเช่นนั้นคำตอบก็จะเป็นไปไม่เว้นเสียแต่ว่าคุณจะปรับซอร์สโค้ดด้วยตัวคุณเองเพื่อรองรับการทำงานตามคำสั่ง แต่จากนั้นคุณยังต้องกำหนดว่าคำสั่งใดที่จะทำสิ่งนี้ด้วยตัวของมันเองมันช่างน่าเบื่อหน่ายกว่าการกด Enter เพิ่มเติม ...