เสร็จสิ้นชื่อไฟล์สำหรับไฟล์ระยะไกล


16

เพื่อนของฉันแสดงให้ฉันเห็นถึงเคล็ดลับดีๆเกี่ยวกับ Emacs เมื่อไม่นานมานี้ซึ่งเขาสามารถเปิดไฟล์บนเซิร์ฟเวอร์ระยะไกลได้และฉันก็คิดทันทีว่า

ฉันสามารถใช้:e scp://user@server//filepathเพื่อทำอย่างนั้นไม่มีปัญหา;) อย่างไรก็ตามเขาสามารถพิมพ์ชื่อเซิร์ฟเวอร์จากนั้นรับไฟล์พา ธ และชื่อ (พร้อมแท็บ) ให้เสร็จสมบูรณ์สิ่งที่ฉันไม่สามารถทำได้ มีใครบางคนรู้ว่าสิ่งนี้สามารถทำได้ในกลุ่ม?


1
ฉันมี แต่ ctrlp อาจสนับสนุนมัน ... แต่เห็นได้ชัดว่ามันเป็นคำขอคุณลักษณะ
muru

คำตอบ:


6

ใช่แต่ปัจจุบัน (2015) ไม่ได้ออกนอกกรอบเพราะตัวจัดการไฟล์ในตัวของ vim ไม่รองรับการท่องเว็บในระยะไกล .

อัปเดต Q3 @ 2016:

มีการทำงานหลายอย่างพร้อมระดับความสบาย / ความเข้ากันได้ / ความพยายามที่แตกต่างกัน ทั้งหมดเข้าด้วยกันพวกเขารวมกันเป็นโซลูชันที่ดี แต่พวกเขาทั้งหมดสามารถใช้เป็นรายบุคคล:

  • ตั้งค่าระดับผู้ใช้afuse/ sshfsdaemon ในไฟล์ shell init ของคุณ

    ด้วยไม่กี่บรรทัดของสคริปต์ที่มาจากเช่นคุณสามารถตั้งค่าตามความต้องการอัตโนมัติเมานท์ภายใต้เช่นไดเรกทอรี.profile รายละเอียดของการรวมกลุ่มนี้ในโพสต์บนUnix และ Linux SE นี่เป็นตัวเลือกที่สะดวกสบายที่สุดไฟล์ระยะไกล "ปรากฏ" ในตัวเครื่อง แต่ต้องการและพร้อมให้คุณใช้งาน~/scp/afusesshfs

  • ตั้งค่าการดำเนินการบรรทัดคำสั่งของเชลล์สำหรับเส้นทางไฟล์ระยะไกล

    แพคเกจฟังก์ชั่นเสร็จสมบูรณ์สำหรับทุบตีมีฟังก์ชั่นบางอย่างที่ออกแบบมาสำหรับsshและscpเสร็จสิ้น ด้วยฟังก์ชั่เสื้อคลุมvim(), mangling เส้นทางระยะไกลในvim's vimคาดว่ารูปแบบที่พวกเขาสามารถใช้ในการจัดหาแท็บเสร็จไฟล์จากระยะไกล ข้อบกพร่องเล็กน้อยของวิธีการนี้ก็มีรายละเอียดเช่นกัน สำหรับสถานการณ์โดยไม่ต้องสงสัย จำเป็นbash-completionต้องติดตั้งหรือเทียบเท่าและการดัดแปลงสำหรับเชลล์อื่น ๆ

หากคุณไม่สามารถปรับเปลี่ยนสภาพแวดล้อมของคุณหรือ.vimrc- เพียงอย่างเดียว: ในเครื่องมือจัดการไฟล์คุณสามารถใช้// ?Keys เพื่อค้นหาไปข้างหน้า / ข้างหลังและคุณสามารถแมปTABกับหนึ่งในนั้นได้ สิ่งนี้มีพลังมากกว่าเสียงเพื่อนำทางคุณไปรอบ ๆ ระบบไฟล์อย่างรวดเร็ว คำอธิบายด้านล่าง

วิธีแก้ปัญหาเบื้องต้น (สำหรับ vim มาตรฐานที่มี NetRW):

  • อย่าชี้เป็นกลุ่มไปยังไฟล์ระยะไกล
  • ชี้ไปที่ไดเรกทอรี "ที่ด้านบน" เช่น$HOME: vim scp://files/หรือ/:vim scp://files///
  • ปลั๊กอิน NetRW จะเปิดขึ้นในโฟลเดอร์ระดับบนสุดที่ต้องการ ( /หรือ$HOME)
  • ใน NetRW คุณสามารถนำทางด้วยการกดแป้นบางครั้งอย่างน่าประหลาดใจ:
  • หากต้องการแก้ไขระยะไกล/etc/network/interfacesด้วย NetRW บน/:

    /etENTERENTER/netwENTERENTER/intENTERt

คุณสามารถใช้?เพื่อค้นหากลับด้านบนเสมอโดยไม่ต้องห่อจากด้านบน

ยิ่งไปกว่านั้นสำหรับการลอกเลียนแบบ TAB -Completion เพิ่มใน.vimrc:

  • แผนที่TABไป/ ใน NetRW:autocmd filetype netrw noremap <buffer> <TAB> /
  • กำหนดค่า NetRW สำหรับ TreeView: let g:netrw_liststyle=3
  • เพิ่มสลับสำหรับ VExplore ระยะไกล<C-E>หากคุณต้องการ (ฉันใช้มัน)
  • ผมขอแนะนำincsearch, ignorecaseและsmartcaseสำหรับ NetRW หรือบัฟเฟอร์ทั้งหมด

เมื่อเทียบกับการเสร็จสิ้นของแท็บทั่วไปที่แตกต่างกัน แต่สะดวกสบายมาก

หมายเหตุ: ทั้งหมดข้างต้นถือว่าการเชื่อมต่อที่ใช้รหัสผ่านแบบไม่ใช้ใบรับรอง ssh ~/.ssh/configกับผู้ใช้, พอร์ต, การบีบอัด, JumpHost (ProxyCommand มีการติดตั้งเพื่อให้จำเป็นต้องใช้ชื่อโฮสต์ / นามแฝงเท่านั้น

เรื่องนี้ได้รับการกล่าวถึงก่อนหน้านี้นอกสถาน ที่ที่นี่ และที่นี่


1
คุณสามารถขยายเคล็ดลับโดยการสรุปลิงก์ได้หรือไม่? ลิงค์ธรรมดาไม่ได้มีประโยชน์มากหากเว็บไซต์นั้นล่มหรือตาย
muru

ฉันคิดว่านี่เป็น "ทางออก" สุดท้ายของฉันจนกว่า NetRW จะสามารถทำได้ ฉันจะยังคงจัดการกับปัญหาที่ทราบอยู่แล้ว แต่คาดว่าจะพบข้อบกพร่องที่ละเอียดอ่อนมากขึ้นแก้ไข (หรือชี้ไปที่) เพิ่มเติมและการปรับปรุง พวกเขาจะได้รับการแก้ไข / จัดตั้ง ขอบคุณสำหรับการแสดงความคิดเห็น
Alex Stragies
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.