Vim ile bir ağdaki dosyaları nasıl düzenlemem gerekiyor?


13

Şu anda bir sunucuya SSHing yaparak ve sunucuda Vim uygulayarak yapıyorum. Bu, SCP üzerinden uzak bir sunucudan dosya açma hantal sözdizimi ile uğraşmak zorunda kalmamak ve daha da önemlisi, sunucunun dosya sisteminde gerçekten hızlı bir şekilde gezinebilme avantajına sahiptir. Öte yandan, düzenlemeyi zorlaştıran gecikme vardır.

Çok sayıda uzak dosyayı düzenlemenin standart yolu nedir?


6
Tam olarak nasıl yapıyorsun.
Ignacio Vazquez-Abrams

Eğer vimlag sergiliyor, bu muhtemelen ağınız yerine, iş akışı ile ilgili bir sorun işaret ediyor.
Joseph R.

ssh root@myvps.com; vim / etc / somefile - Giriş yapıyorum ve sonra Vim
jcora'yı yakıyorum

Aslında ağ ile. Bir tuşa bastığımda, kullandığım Vim örneğinin çalıştığı Avrupa'dan ABD'ye bir paket göndermesi gerekiyor.
jcora

Sadece yapabilirsin ssh root@myvps.com vim /etc/somefile(yokluğunu not edin ;).
terdon

Yanıtlar:


26

Yerel bir klasöre uzak bir ev bağlamak için SSHFS kullanabilirsiniz . Mevcut altyapıyı kullanma ve yerel vim gecikme süresinin avantajı vardır.


1
en iyi yol imo. sadece düşük gecikme süresi değil, sadece bir
vimrc

20

Yerel bir vim veya gvim ile uzaktan düzenleyebilirsiniz.

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

scpBir olan güvenli kopya protokolü . Bu, aynı şekilde kimlik doğrulaması yapar ssh, bu nedenle ssh anahtarınızın kullanılabilir olması gerekir :help netrw-externapp.

Dizinlere bu şekilde göz atabilirsiniz, yolun a ile bittiğinden emin olun /. Aksi takdirde vim dosyayı yeni bir dosyaya dönüştürür.

:wdosyayı otomatik olarak scp ile yazar. Yazma herhangi bir nedenle başarısız olursa, durum çubuğunda "kabuk 1 döndürüldü" türünde olacağından fark etmelisiniz. Bununla birlikte, dikkat: fark etmezseniz , vim bilmiyor ve bunun sonuçları olabilir - örneğin, şimdi bıraktığınızda sizi uyarmaz. Çok kullanıyorsanız bu kaçırmak özellikle kolaydır :wa; Sahip olduğum tek uyarı bu.

Resmi dokümanlar için bkz :help netrw.


+1 Bunu yazmak üzereydim. Netrw eklentisi (genellikle varsayılan olarak yüklenir) uzak dosyalarını okumak için yollar çok çeşitli vardır.
Greg Hewgill

: Ben derken bu seçeneğin atıfta bulundu "gerçekten hızlı sunucunun dosya sistemi gezinmek edememek, daha da önemlisi, bu SCP üzerinden bir uzak sunucudan açılış dosyalarının hantal sözdizimi ile uğraşmak zorunda değil yararı vardır ve" Bu şekilde benim için çok sınırlı görünüyor.
jcora

1
Adil olmak gerekirse, sorunuz ilk olarak daha sonra düzenlenecek olan "SCP üzerinden uzak sunucu" dan bahsetmedi.
Greg Hewgill

@GregHewgill: Biraz şaşkın olduğum için bu not için teşekkürler - bu, genel amaçlar için en basit ve basit yöntemdir (SSHFS'ye suç yok!). Bir dosya yoluna bir URL eklemek nispeten zahmetli ise, yapılan işin aslında birisinin bunu yapmak için bir editörle oturmasını gerektirdiğini merak ediyorum ... esp. çünkü sadece yukarı oku okuyabilirsiniz. Ama her biri kendi için.
goldilocks

@GregHewgill evet, biliyorum, taşınırken soruyu telefonuma yazdım, böylece istemeden bazı şeyleri dışarıda bıraktım. goldilocks, her zaman dosyaları açıp kapatıyorum. Dosya sisteminde de gezinin ve oradan açın. Bir URL + yolu eklemek yalnızca "orada olmaktan" daha zahmetli bir işti.
jcora

2

Rsync kullanırdım. Sadece değişenleri aktarır. Şöyle ki:

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

sonra dosyaları kendi boş zamanlarınızda yerel olarak düzenleyin. Sıfır gecikme. Taahhüt etmeden önce tüm dosyaları inceleyebilirsiniz:

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

Önce yerel direktörünüzü yarattığınızı ve buna cddahil ettiğinizi varsayıyorum . Ayrıca, dosyaların kaldırılmasını kaldırabilir, ancak buna gerçekten dikkat edin, çünkü yanlış dizinde yürütmek tüm dizin ağacını tıkayabilir.

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

Yaptığım şey "n" bayrağını kullanarak ilk önce "kuru modda" çalıştırmak, şöyle:

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

Gerçek olsaydı ne yapardığını rapor edecek. Bildirilen listeden memnunsam, tekrar çalıştırırım ve 'n' bayrağını kaldırırım.

rsync çok verimlidir. Başka bayraklar da var. Oldukça sofistike.


0

En uygun yol - SSH yolu olarak adlandırılmış olabilirsiniz, ancak yine de düzenlenen dosyaların doğasına bağlı olarak, güvenlik ilkesi bu eyleme izin veriyorsa, paylaşımlı hale getirip dosyaları oraya koyabilirsiniz. Bu öneri için NFS veya Samba'yı en kolay şekilde kullanabilirsiniz, ancak yine de test dosyasını düzenlemek UNIX'te genel bir kavramdır ve bunu şu anda yaptığınız gibi tutmanız gerekebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.