การเติมข้อความอัตโนมัติ zsh คอมไพล์


10

ฉันเพิ่งเปลี่ยนจาก bash เป็นการใช้ zsh 4.3.4 บน Ubuntu Hardy ฉันกำลังพัฒนาด้วย git และฉันพบว่าตัวเองต่อสู้อย่างต่อเนื่องกับความสำเร็จของคอมไพล์เริ่มต้น: การเติมชื่อไฟล์พยายามที่จะฉลาดโดยการตรวจสอบสิ่งที่คุณเพิ่มหรือลบ (ใช้ git-ls-files) แต่บางครั้งมันก็ผิดพลาด --- เช่นถ้าคุณอยู่ในไดเรกทอรีย่อย นอกจากนี้ยังไม่รู้เกี่ยวกับชื่อแทนคอมไพล์ที่กำหนดเองของฉัน (เช่น git ci เป็นนามแฝงสำหรับคอมมิท)

zsh superusers ฉันจะปรับปรุงสถานการณ์นี้ได้อย่างไร?

นี่คือความคิดบางอย่างของฉันแม้ว่าฉันจะไม่ทราบวิธีการใช้งานพวกเขาในขณะที่ฉันยังใหม่กับ zsh ดังนั้นบางทีคุณสามารถช่วยหรือเสนอของคุณเอง:

  • ปิดใช้งานการเติมชื่อไฟล์ git ให้เหลือเพียง branch / tag / command-name / command-option
  • แทนที่ความสมบูรณ์ของชื่อไฟล์ "สมาร์ท" ด้วยความสมบูรณ์ของชื่อไฟล์ zsh
  • รับไฟล์ _git เสร็จสมบูรณ์ที่ใหม่กว่าถ้ามันแก้ไขข้อบกพร่องเหล่านี้และแทนที่หนึ่งในระบบ

ขอบคุณ!



ใช่เท่าที่ฉันสามารถบอกได้มันแค่เพิ่มการคอมไพล์พรอมต์และไม่ได้ปรับแต่งความสำเร็จที่ซ่อนอยู่
เอมิลนั่ง

บางคนสามารถบอกเราได้ว่าจะปิดการใช้งานคำสั่ง git ทั้งหมดสำหรับ "smart" ทั้งหมดได้หรือไม่? พวกเขาทำ IO มากเกินไป เชลล์ต้องตอบสนองทันที ฉันแค่ต้องการกลับไปใช้ชื่อไฟล์แบบเก่าที่ดีสำหรับคำสั่ง git ทุกครั้งที่ฉันค้นหาเว็บฉันจะได้รับข้อมูลจาก zsh man page ทั่วไป
Peter Lyons

2
FYI สำหรับคนที่ต้องการที่จะเพียงแค่ปิดการใช้งานเสร็จคอมไพล์ที่น่ารำคาญที่ทำให้เปลือกเพื่อป้องกันการทำ IO, บน Ubuntu 10.04 ผมก็ทำอย่างนี้: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
ปีเตอร์ลียง

คำตอบ:


5

ลองอัปเกรดเป็น Zsh เวอร์ชันล่าสุด ฉันเพิ่งอัพเกรดจาก 4.3.4 เป็น 4.3.10 และอย่างน้อยก็แก้ปัญหากับนามแฝง Git ที่ไม่เสร็จสมบูรณ์

แทนที่จะแฮ็คการติดตั้งของฉันฉันเพิ่มสิ่งนี้ลงในเครื่องของฉัน.zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi

5

สำหรับโครงการขนาดใหญ่แม้แต่สคริปต์การเติม git ที่ใหม่กว่าก็ช้าเกินไป หากต้องการปิดการใช้งานและเพียงแค่ใช้ไฟล์ที่สมบูรณ์ตามปกติให้วางคำสั่งต่อไปนี้ใน. zshrc ของคุณ:

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