แท็บที่มีลักษณะคล้าย Zsh ของเส้นทางบางส่วน


11

เกี่ยวข้องกับBash-like บางส่วนของแท็บที่สมบูรณ์สำหรับชื่อไฟล์ใน Vim

หนึ่งในคุณสมบัติที่ยอดเยี่ยมอย่างแท้จริงของzshคือการที่คุณสามารถพิมพ์ตัวอย่างเช่นls /u/s/m/m/who.1กดและมีมันจะเสร็จสมบูรณ์Tab ls /usr/share/man/man1/who.1.gzเมื่อคุณคุ้นเคยกับมันแล้วมันน่ารำคาญมากที่จะกลับไป/u<tab>/s<tab>/m<tab>/m<tab>...โดยเฉพาะอย่างยิ่งเมื่อเส้นทางบางส่วนทั้งหมดสามารถแก้ไขได้เพียงเส้นทางเดียวเท่านั้น แต่แต่ละองค์ประกอบอาจมีความสำเร็จที่หลากหลาย สิ่งนี้สามารถเกิดขึ้นได้ในกลุ่มตัวอย่างเช่นเมื่อใช้:eหรือ:cd?

มีคุณสมบัติอื่น ๆ ที่เกี่ยวข้องกับเส้นทางที่เป็นประโยชน์ใน zsh เช่นการใช้cd foo barเพื่อย้ายไปยังเส้นทางที่เทียบเท่ากับfooแทนที่ด้วยbar(เช่น/blah/foo/baz/yadaกลายเป็น/blah/bar/baz/yada) หากมีวิธีการแก้ปัญหาที่นำสิ่งเหล่านี้มาด้วย (โดยหลักแล้วมอบหมายงานที่เกี่ยวข้องกับเชลล์ให้กับเชลล์ที่ทำงานได้ดีมาก) มันจะดีมาก


1
ฉันไม่ได้ตระหนักถึงสิ่งใดที่บรรลุเป้าหมายที่คุณขอมาอย่างชัดเจน แต่มีตัวค้นหาฟัซซี่หลายไฟล์ที่อนุญาตให้คุณเปิดไฟล์ในลักษณะเดียวกัน ฉันชอบ CtrlP แต่ก็มี Command-T และฉันแน่ใจว่ามีคนอื่นที่ฉันลืมชื่อ
รวย

1
@ อุดมไปด้วยตราบใดที่ฉันไม่ต้องทา Tab หลายครั้งฉันก็มีความสุข
muru

คำตอบ:


6

ฉันเคยใช้ CtrlP และปลั๊กอินอื่น ๆ ที่เกี่ยวข้องอย่างหนักก่อนหน้านี้จนกระทั่งฉันค้นพบพลังดั้งเดิมของเสียงเรียกเข้า ให้ฉันอธิบายวิธีการทำเช่นนี้โดยไม่ต้องใช้ปลั๊กอินภายนอก:

  1. :eสิ่งที่ดีเกี่ยวกับ: E คือคุณสามารถทำสิ่งที่ชอบและเป็นกลุ่มที่จะขยายโดยอัตโนมัติเพื่อให้คุณ:e /u*/s*/m*/m*/<Tab> :e /usr/share/man/manสั้นและเรียบง่ายกว่าสิ่งที่คุณโพสต์มาก แต่วิธีที่ดีกว่าคือการทำ:e /usr/**/man<Tab>แบบนั้นมันจะดูซ้ำ ๆ/usrและทำรายการเส้นทางที่ตรงกันทั้งหมดซึ่งอาจใช้เวลานานขึ้นอยู่กับว่าชุดใหญ่แค่ไหน โปรเจ็กต์นี้ใช้งานได้อย่างน่าอัศจรรย์เพราะคุณสามารถทำสิ่งที่ชอบ:e ap**/jav**/user<Tab>และมันจะทำเส้นทางที่ไม่สมบูรณ์ทั้งหมดและให้รายการเส้นทางที่ตรงกันและใช้งานได้ดีมาก
  2. :bเพื่อเปิดบัฟเฟอร์ที่มีอยู่ นี่เป็นเรื่องที่ทรงพลังจริงๆเพราะมันยอมรับ partials เป็นค่าเริ่มต้นดังนั้นคุณสามารถทำอะไรได้บ้าง:b usr*man<Tab>และมันจะทำให้ชื่อไฟล์สมบูรณ์ถ้ามันถูกโหลดในรายการบัฟเฟอร์แล้ว นี่เป็นสิ่งที่ดีโดยเฉพาะอย่างยิ่งเพราะใกล้ถึงเวลาและรวดเร็ว นอกจากนี้ฉันยังใช้เซสชันเป็นกลุ่มอย่างหนักด้วยความช่วยเหลือของtpope / vim-obsessionและdhruvasagar / vim-prosessionที่ทำให้ไฟล์ทั้งหมดที่ฉันเปิดอยู่ในรายการบัฟเฟอร์และพวกมันพร้อมใช้งานแม้ว่าฉันจะมี vim และกลับมาจาก ไดเรกทอรีโครงการ

1
/u*/s*/m*/m*/<Tab>เป็นวิธีที่ฉันใช้ในการแก้ไขทุบตี มันไม่ได้ใช้แทน zsh ด้วยไมล์ /usr/**/man<Tab>ช้าอย่างน่ากลัวเมื่อคุณเปิดระบบไฟล์ทั้งหมด แต่อาจมีประโยชน์สำหรับโครงการขนาดเล็ก ถ้าฉันเข้าใจผิด:bมันไม่ได้เป็นการเปิดไฟล์ใหม่
muru

@muru คุณถูกต้องไม่ใช่ตัวแทนของ zsh แต่ก็ยังดีกว่าที่จะพิมพ์ทุกอย่างด้วยตัวคุณเองมันเกี่ยวกับการทำให้มันง่ายขึ้น**ช้าลงอย่างน่ากลัว แต่ก็ใช้ได้ดีสำหรับโครงการทั่วไป :bสำหรับบัฟเฟอร์แบบเปิดที่มีอยู่นั่นคือสาเหตุที่การใช้เซสชันช่วย
Dhruva Sagar

5

vim-zsh-path- complete กล่าวอ้างเพื่อทำสิ่งที่คุณต้องการ (อย่างน้อยก็ส่วนแรก) แต่ฉันไม่เคยลองเลย (ฉันไม่เคยได้ยินเรื่องนี้มาก่อนจนกว่าจะมีการเชื่อมโยงกับคำตอบ SO ของผู้เขียนถึงแม้ว่าเอกสารของมันจะพูดถึงข้อ จำกัด หลายประการก็ตาม

นอกจากนี้ยังมีตัวค้นหาฟัซซี่หลายไฟล์ที่มีบางอย่างที่คล้ายกันสำหรับการเปิดไฟล์

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

ตามค่าเริ่มต้นจะจับคู่<c-p>ในโหมดปกติเพื่อเปิดพรอมต์ CtrlP พรอมต์จะแสดงรายการไฟล์ซึ่งจะแคบลงเมื่อคุณพิมพ์อักขระ คุณสามารถกดEnterที่จุดใดก็ได้เพื่อเปิดไฟล์ที่เลือกในปัจจุบันหรือใช้<c-k>และ<c-j>เพื่อย้ายส่วนที่เลือกขึ้นและลงผ่านรายการไฟล์ที่จับคู่ปัจจุบัน

อีกทางเลือกที่นิยมคือCommand-Tแต่ฉันชอบ CtrlP เพราะใช้ใน VimScript; Command-T มีส่วนประกอบ Ruby

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