วิธีปิดใช้งาน“ auto cd” ใน zsh ด้วย oh-my-zsh


29

Googling สิ่งนี้ไม่แสดงผลลัพธ์ใด ๆ นี่คือสิ่งที่ผมหมายถึง: ฉันมีแฟ้มไบนารีชื่อxในเส้นทางของฉัน (ไม่โฟลเดอร์ปัจจุบัน แต่ก็เป็นในPATH) และยังโฟลเดอร์ที่มีชื่อเดียวกันในไดเรกทอรีที่ทำงานปัจจุบัน ถ้าฉันพิมพ์xฉันต้องการไบนารีที่จะดำเนินการ แต่แทนที่จะเป็นซีดีลงในโฟลเดอร์นั้น ฉันจะแก้ไขได้อย่างไร

คำตอบ:


46

มีสามคำถามในหนึ่ง ;-)

ตัวเลือก AUTO_CD และวิธีการค้นหา

ตัวเลือกแรกที่คุณต้องการคือ AUTO_CD man zshoptionsคุณสามารถค้นหาได้โดยมองขึ้นไป ใช้ฟังก์ชั่นการค้นหาวิทยุติดตามตัวของคุณโดยปกติคุณจะกด/และป้อนคำหลัก กับnคุณข้ามไปที่เกิดขึ้นต่อไป สิ่งนี้จะทำให้เกิดสิ่งต่อไปนี้:

[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

unsetopt AUTO_CDตัวเลือกที่สามารถตั้งค่าการใช้

ปิดอย่างถูกต้อง

คุณกำลังใช้ oh-my-zsh ซึ่งอธิบายไว้ว่า

"เฟรมเวิร์กที่ขับเคลื่อนโดยชุมชนสำหรับการจัดการการกำหนดค่า zsh ของคุณ" ประกอบด้วยปลั๊กอินเสริมมากกว่า 120 รายการ (ทางรถไฟ, git, OSX, ฮับ, คาปิสทราโน, ชง, มด, macports, ฯลฯ ), ...

ดังนั้นสิ่งต่อไปคือการค้นหาวิธีเปิด / ปิดตัวเลือกตามกรอบงาน

ไฟล์ readme.textileรัฐว่าวิธีที่ต้องการเพื่อเปิด / ปิดการใช้งานปลั๊กอินจะเป็นรายการใน .zshrc คุณ: plugins=(git osx ruby) หาที่ปลั๊กอินใช้ตัวเลือก AUTO_CD เมื่อค้นพบจาก manpage สามารถเรียกใช้ผ่านสวิตช์ -J หรือ AUTO_CD เนื่องจาก oh-my-zsh พร้อมใช้งานบน github การค้นหาจะเปิดไฟล์lib/theme-and-appearance.zshขึ้นมา หากคุณไม่ต้องการปิดการใช้งานปลั๊กอิน "ชุดรูปแบบและลักษณะที่ปรากฏ" ให้ใส่unsetopt AUTO_CDใน. zshrc ของคุณ อย่าแก้ไขไฟล์ของ oh-my-zsh โดยตรงเพราะในกรณีที่คุณกำลังอัพเดตเฟรมเวิร์กการเปลี่ยนแปลงของคุณจะหายไป

เหตุใดไฟล์ที่เรียกทำงานจะไม่ถูกเรียกใช้โดยตรง

คำถามที่สามของคุณคือ HOWTO รันไบนารีโดยตรง: คุณต้องเรียกใช้ไฟล์ไบนารีของคุณผ่านทางเส้นทางเช่นมีคำนำหน้าเช่นเดียวกับใน./ ./do-somethingนี่เป็นคุณลักษณะด้านความปลอดภัยบางอย่างและไม่ควรเปลี่ยน หิ้งของเสียบ USB ติด, lsการติดตั้งและมีลักษณะที่มันมี หากมีไฟล์เรียกทำงานที่เรียกใช้lsซึ่งลบโฮมไดเร็กตอรี่ของคุณทุกอย่างจะหายไปเนื่องจากจะมีการเขียนทับคำสั่ง $ PATH ของคุณ

หากคุณมีคำสั่งที่คุณเรียกซ้ำ ๆ การตั้งค่านามแฝงใน. zshrc ของคุณจะเป็นวิธีแก้ปัญหาทั่วไป


4
ขอบคุณมาก! สิ่งที่ฉันต้องการคือunsetopt auto_cdบรรทัด (ฉันไม่ได้กล่าวถึงอย่างชัดเจนว่าการปฏิบัติการอยู่ในเส้นทางของฉัน แต่อย่างไรก็ตามคำอธิบายอาจช่วยให้ผู้ใช้คนอื่นคิดออก)
Gabi Purcaru

ขอขอบคุณสำหรับคำตอบอย่างละเอียดและให้รายละเอียดเกี่ยวกับวิธีที่คุณพบข้อมูล (ช่วยให้ผู้อื่นค้นหาข้อมูลเช่นนี้ด้วยตัวเองในอนาคต)
สแลชต่อท้าย

2
ย่อหน้าสุดท้ายของคุณไม่สมเหตุสมผล OP กำลังถามเกี่ยวกับไบนารีในPATHตัวแปรสภาพแวดล้อมที่พวกเขาต้องการให้ความสำคัญเหนือกว่า autocd มันมีอะไรจะทำอย่างไรกับการไร้ความสามารถของเชลล์สคริปต์ในการทำงานที่ปฏิบัติการได้จากเส้นทางโดยไม่ได้ระบุอย่างใดอย่างหนึ่งหรือ./ /
Qix

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