ฉันควรแก้ไขไฟล์ในเครือข่ายด้วย Vim ได้อย่างไร?


13

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

อะไรคือวิธีการบัญญัติบัญญัติของการแก้ไขไฟล์ระยะไกลมากมาย?


6
วิธีการที่คุณทำ
Ignacio Vazquez-Abrams

หากvimแสดงความล่าช้าสิ่งนี้อาจชี้ไปที่ปัญหากับเครือข่ายของคุณแทนที่จะเป็นเวิร์กโฟลว์ของคุณ
โจเซฟอาร์

ssh root@myvps.com; เป็นกลุ่ม / etc / somefile - ฉันเข้าสู่ระบบแล้วไฟขึ้นเป็นกลุ่ม
jcora

อันที่จริงมันเป็นกับเครือข่าย เมื่อฉันกดปุ่มมันจะต้องส่งแพ็คเก็ตจากยุโรปไปยังสหรัฐอเมริกาซึ่งอินสแตนซ์ Vim ที่ฉันใช้นั้นกำลังทำงานอยู่
jcora

คุณสามารถทำได้ssh root@myvps.com vim /etc/somefile(สังเกตการขาดงาน;)
terdon

คำตอบ:


26

คุณสามารถใช้SSHFSเพื่อติดตั้งบ้านระยะไกลในโฟลเดอร์ท้องถิ่น มีความได้เปรียบในการใช้โครงสร้างพื้นฐานในปัจจุบันและความหน่วงแฝงต่ำของ Local vim


1
วิธีที่ดีที่สุด imo ไม่เพียง แต่ latency ต่ำเท่านั้น แต่ต้องรักษา vimrc หนึ่งตัวด้วย
exussum

20

คุณสามารถแก้ไขจากระยะไกลด้วย vim ท้องถิ่นหรือ gvim

:e scp://me@someplace.else/~/myfiles/whatever.file

scpเป็นโปรโตคอลสำเนาที่เชื่อถือได้ มันรับรองความถูกต้องแบบเดียวกับsshดังนั้นคีย์ ssh ของคุณต้องพร้อมใช้งาน ฯลฯ มีโปรโตคอลอื่น ๆ อีกมากมายที่รองรับ (ดู:help netrw-externapp) แต่ scp น่าจะเป็นวิธีที่ง่ายที่สุดถ้าคุณใช้ ssh ในที่เดียวกันอยู่แล้ว

/คุณสามารถเรียกดูไดเรกทอรีวิธีนี้เพียงให้แน่ใจว่าเส้นทางที่ลงท้ายด้วย มิฉะนั้นเสียงเรียกเข้าเปลี่ยนเป็นไฟล์ใหม่

:wเขียนไฟล์โดยอัตโนมัติผ่าน scp หากการเขียนล้มเหลวด้วยเหตุผลบางอย่างคุณควรสังเกตเพราะมันจะเป็นชนิดของ "shell return 1" ในแถบสถานะ อย่างไรก็ตามระวัง: หากคุณไม่สังเกตเห็นเป็นกลุ่มไม่ทราบและอาจมีผลกระทบ - ตัวอย่างเช่นถ้าคุณออกตอนนี้มันจะไม่เตือนคุณ เป็นเรื่องง่ายอย่างยิ่งที่จะพลาดสิ่งนี้หากคุณใช้:waบ่อย; นั่นเป็นข้อแม้เดียวที่ฉันมี

:help netrwสำหรับเอกสารอย่างเป็นทางการเห็น


+1 ฉันเพิ่งจะเขียนสิ่งนี้ ปลั๊กอิน netrw (ซึ่งมักจะมีการติดตั้งค่าเริ่มต้น) มีความหลากหลายของวิธีในการอ่านไฟล์ระยะไกล
Greg Hewgill

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

1
เพื่อความเป็นธรรมคำถามของคุณไม่ได้กล่าวถึง "เซิร์ฟเวอร์ระยะไกลบน SCP" ซึ่งได้รับการแก้ไขในภายหลัง
Greg Hewgill

@ GregHewgill: ขอบคุณที่ทราบว่าฉันรู้สึกงุนงง - นี่เป็นวิธีที่ง่ายที่สุดและตรงไปตรงมาเพื่อวัตถุประสงค์ทั่วไป (ไม่มีความผิดต่อ SSHFS!) หากการต่อท้าย URL ลงใน filepath นั้นค่อนข้างยุ่งยากฉันอยากรู้ว่างานที่ต้องทำจริง ๆ แล้วต้องมีคนนั่งลงพร้อมกับเครื่องมือแก้ไขเพื่อทำ ... esp เนื่องจากคุณสามารถเพิ่มลูกศรคำสั่งได้ แต่เพื่อตัวของพวกเขาเอง
goldilocks

@GregHewgill ใช่ฉันรู้ว่าฉันเขียนคำถามลงในโทรศัพท์ของฉันในขณะที่ย้ายดังนั้นฉันทิ้งบางสิ่งบางอย่างออกมาโดยไม่ได้ตั้งใจ goldilocks ฉันเปิดและปิดไฟล์ตลอดเวลา นำทางระบบไฟล์ด้วยและเปิดจากที่นั่น การต่อท้าย URL + พา ธ นั้นยุ่งยากกว่าเพียงแค่ "อยู่ที่นั่น"
jcora

2

ฉันจะใช้ rsync มันโอนเฉพาะสิ่งที่เปลี่ยนแปลง ชอบมาก

rsync -e ssh -va remoteuser@remotehost:remotedir .

จากนั้นแก้ไขไฟล์ในเครื่องตามที่คุณต้องการ ศูนย์ล่าช้า คุณจะตรวจสอบไฟล์ทั้งหมดก่อนที่จะส่งมอบ:

rsync -e ssh -va . remoteuser@remotehost:remotedir

ฉันสมมติว่าคุณสร้าง dir ในพื้นที่ของคุณcdก่อน คุณสามารถทำให้มันจัดการกับการลบไฟล์ได้ แต่ต้องระวังให้ดีเพราะการดำเนินการในไดเรกทอรีที่ไม่ถูกต้องอาจทำให้ทั้งไดเรกทอรีต้นไม้หมด

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

สิ่งที่ฉันทำคือฉันเรียกใช้ใน "โหมดแห้ง" ก่อนโดยใช้แฟล็ก 'n' เช่น:

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

มันจะรายงานสิ่งที่มันจะทำถ้ามันเป็นเรื่องจริง หากฉันมีความสุขกับรายการที่รายงานฉันจะเรียกใช้อีกครั้งและลบการตั้งค่าสถานะ 'n'

rsync มีประสิทธิภาพมาก มีธงอื่น ๆ อีกมากมายเช่นกัน มันค่อนข้างซับซ้อน


0

อาจเป็นคุณชื่อวิธีที่เหมาะสมที่สุด - วิธี SSH แต่ยังขึ้นอยู่กับลักษณะของไฟล์ที่ถูกแก้ไขคุณสามารถจัดสรรพาร์ติชั่นเล็ก ๆ น้อย ๆ ทำให้มันใช้ร่วมกันและวางไฟล์ที่นั่นแน่นอนถ้านโยบายความปลอดภัยอนุญาตการกระทำนี้ สำหรับคำแนะนำนี้คุณอาจใช้ NFS หรือ Samba ได้ง่ายที่สุด แต่การแก้ไขไฟล์ทดสอบเป็นแนวคิดทั่วไปใน UNIX และคุณอาจต้องเก็บไว้ในแบบที่คุณทำอยู่ในปัจจุบัน

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