ฉันจะทำให้เชลล์เติมข้อความอัตโนมัติให้เริ่มต้นของ filepath ได้อย่างไร?


0

ฉันมีโครงการที่มีโครงสร้างโฟลเดอร์ซ้อนกันอย่างลึกซึ้ง ส่วนใหญ่ฉันรู้ชื่อของไฟล์ที่ฉันต้องการทำงานด้วย แต่เส้นทางของโฟลเดอร์นั้นยาวเกินไป / ซับซ้อนเกินกว่าที่จะพิมพ์เมื่อฉันต้องการแก้ไขมันเช่น:

vim folder/is/deep/down/there/myfile.js

มีวิธีที่จะทำให้เชลล์อัตโนมัติเติมเส้นทางให้ฉันหรือไม่ถ้าชื่อไฟล์นั้นไม่เหมือนใคร

vim *myfile.js

กด tab

vim folder/is/deep/down/there/myfile.js

ฉันใช้ทุบตีเป็นส่วนใหญ่ แต่ฉันใช้ได้กับ zsh ถ้ามันสามารถแก้ปัญหาได้


วิธีแก้ปัญหา: mypath=folder/is/deep/down/there/แล้วvim $mypath/myfile.jsล่ะ และใช่ตรวจสอบ zsh GLOB_COMPLETE ตามที่แนะนำใน SO
meatspace

ขอบคุณ @meatspace สิ่งนี้จะใช้ได้ดีกับโฟลเดอร์ไม่กี่โฟลเดอร์ แต่โครงการที่ฉันกำลังทำอยู่นั้นมีหลายเส้นทางที่ต่างกัน การตั้งชื่อและจดจำทุกคนจะไม่เป็นไปได้
canerbalci

คำตอบ:


1

ใน zsh คุณสามารถใช้**โอเปอเรเตอร์เพื่อทำสิ่งนี้:

vim **/myfile.js

จากนั้นกดTabและ zsh จะค้นหาmyfile.jsไฟล์ซ้ำ ๆ


0

ใน Bash 4 และสูงกว่าคุณสามารถใช้**โอเปอเรเตอร์สำหรับ globbing (เพื่อดึงชื่อไฟล์) และสำหรับการเติมแท็บ (คล้ายกับคำตอบ zsh จาก Heptite )

ฉันไม่ทราบว่าเมื่อใดที่การเพิ่มแท็บสำเร็จ**ลงใน Bash (น่าจะเป็น 4.0) หรือแม้ว่าจะเป็นแบบมาตรฐาน แต่พวกเขาใช้งานได้กับฉันใน 4.3.11 (บน Lubuntu) ดูเหมือนว่าจะเปิดใช้งานตามค่าเริ่มต้น

อย่างไรก็ตามลักษณะการทำงานของ**สำหรับ globbing ไม่ได้เปิดใช้งานโดยค่าเริ่มต้นและต้องการให้คุณตั้งค่าตัวเลือกใช้globstar shoptกล่าวคือทำงานที่shopt -s globstarใดที่หนึ่งก่อนที่คุณจะพยายามใช้**ในรูปแบบกลม (ส่วนใหญ่เป็นของคุณ.bashrc) การชี้ให้เห็นว่าการเปิดใช้งานglobstarอาจรบกวนการเติมแท็บของคุณเมื่อมีการแข่งขันหลายรายการ ฉันค้นพบสิ่งนี้ในการทดสอบอย่างรวดเร็ว

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