Dosyaları ssh ile uzaktan nasıl düzenlerim?


82

Ssh ile ulaşabileceğim bazı sunuculara yerleştirilmiş dosyaları düzenlemek zorundayım.

İş vimistasyonumda bu dosyaları özelleştirilmiş olarak düzenlemeyi tercih ederim ( vimUzak sunucudaki ayarları değiştirme hakkım yok ). Bazen bir dosyayı sublime textveya başka bir GUI editörüyle düzenlemek istiyorum .

Tabii ki bu dosyaları indirebilir, yerel olarak düzenleyebilir ve sunucuya geri yükleyebilirim. Daha zarif bir çözüm var mı?

Yanıtlar:


65

Bunu, uzak klasörü sshfs kullanarak dosya sistemi olarak monte ederek yapabilirsiniz. Bunu yapmak için, önce bazı önkoşullar:

# issue all these cmds on local machine
sudo apt-get install sshfs 
sudo adduser <username> fuse

Şimdi, montaj işlemini yapın:

mkdir ~/remoteserv    
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv

Bundan sonra, sadece bağlı klasöre gidin ve kendi yerel özelleştirilmiş vim kullanın.


4
Şaşırtıcı olmayan bir şekilde, kurulum aşaması temeli olmayan debve dolayısıyla sahip olmayan dağıtımlarda başarısız olacaktır apt-get. (Bu durumda yumveya zyppermevcut olabilir.) Yerel makinede ayrıca kök bulunması gerekebilir veya bulunmayabilir. (Bu kötü bir çözüm olduğunu söylemek değildir, ancak büyük bir önkoşulla gelir.)
Ulrich Schwarz

4
Tamam. Anladım. Bunların hepsi yerel makinede yapılır. OS X birinin durumunda yüklemek zorunda osxfuseve sshfs. Bunlar homebrew ( brew install sshfsve brew cask install osxfuseya da osxfuse.github.io
inspirednz

95

Bunu şu şekilde yapabilirsiniz scp:

vim scp://user@myserver[:port]//path/to/file.txt

//Mutlak yolu doğru şekilde çözmek için gerekli olan sunucu ve yol arasındaki iki eğik çizgiye dikkat edin . (Birinci eğik çizgi sözdizimseldir, ikinci eğik çizgi ise her zamanki gibi uzak kullanıcının kök dizinini belirtir. Giriş dizininde başlamak için yapardınız [:port]/~/path/to/file.txt.) [:port]İsteğe bağlıdır.

Bu, vim'in netrw.vim standart eklentisi tarafından gerçekleştirilir . Diğer birkaç protokol desteklenmektedir.


6
Evet, dosya kaydetme sırasında sunucuya yüklenen geçici bir dosyaya alınır.
FloHimself

1
Teşekkür ederim. Ancak, dosyayı kaydetmeye çalıştığımda bir E382: Cannot write, 'buftype' option is set
Loom

2
:set buftype=""​Vim'de deneyebilirsiniz .
FloHimself

2
Ayrıca, vim ~/.ssh/configile uzak ana bilgisayarları okuyacak ve çözecektir vim scp://[host]/path.
Jangari

2
@stillanoob::e scp://...
FloHimself

6

Vim ayarlarını düzenleme hakkınız olmadığını söylerken ne demek istediğinize bağlı olarak, Vim'i sunucuda istediğiniz şekilde kullanmanın bir yolu olabilir. Kullanıcınızı değiştiremiyorsanız .vimrc(örneğin, paylaşılan bir kullanıcı olarak giriş yaptığınız için) ancak dosyaları yine de oluşturabilir, adı verilen bir dosya olarak oluşturabilir, söyleyebilir Loom.vimrcve ardından -udüğmeyi kullanarak Vim'i arayabilirsiniz :

vim -u ~/Loom.vimrc file_to_edit

Daha sonra bir takma ad bile kullanabilirsiniz: alias vim='vim -u ~/Loom.vimrc'Vim'i her zamanki gibi kullanmanıza izin verir ve yine de özel .vimrcdosyanızı yükler. Bu takma ad çıktıktan sonra devam etmez, bu nedenle özelleştirilmiş Vim'inizi yanlışlıkla kullanan başka biri için endişelenmenize gerek yoktur.


2

Ne kadar dosyaya ve ne tür bir dosya düzenlemeyi beklediğinize bağlı olarak, bu tam olarak burada yapmak istediğinizi değil, ama bahsetmeye değer olduğunu düşünüyorum. Dosyaları uzak bir sunucuda düzenlemek zorundaysanız, ancak kendi çalışma istasyonunuzdaki her şeyi kullanmak istiyorsanız , makinelerinizde bir çeşit Revizyon Kontrol sistemi kullanmayı düşünmeye başlamak isteyebilirsiniz . Bu şekilde, kendi yazılımınızdaki yerel kopyalarınızı tercih ettiğiniz yazılımı kullanarak değiştirebilir, değişiklikleri yapabilir ve ardından hedef makinedeki yerel kopyaları güncelleyebilirsiniz. Hangi yazılımla rahat hissettiğinize bağlı olarak dosyaları düzenlemenin yanı sıra , her bir dosyayla ilgili değişiklik geçmişi olan katma değeriniz vardır , ki bu her zaman iyidir.

İşte durumda, Revizyon Kontrol Yazılımının bir listesi .


Orada değişiklik yapmak için değişiklikleri yapmak, bir gitşeye itmek githubve değişiklikleri githubyerel makinenize çekmek gibi bir şeyin kullanılmasını öneriyor musunuz ?
alpha_989

Yani .. Karmaşık kod değişiklikleri için uygulanabilir ama basit kod belki değiştirir için .. Ne @FloHimself veya shivams söz uygulamak daha kolaydır ..
alpha_989

1

Potts'un cevabını genişletmek için: Yukarıdakileri de yapabilirsiniz, ardından .bash_profile (ya da kabuğunuzun kullandığı her ne) içine şöyle bir şey koyun:

if [[ "$(who mom loves | awk ' { print $1 }' )" == "Loom" ]]; then 
         alias vim="vim -u ~/.Loom_vimrc"  
         fi  

Loom, giriş yaptığınız orijinal kullanıcı kimliğinizdir.

Eğer paylaşılan bir hesap olarak giriş yapıyorsanız (ve bireysel bir hesap yoksa o zaman sudo dava açıyorsanız, Von Neuman ruhunuz için merhamet etmenize izin verebilir.

Bunu bir açıklamaya koyardım, ama kodun biçimlendirmesini alamadım.


0

Zaten çalışan bir vim oturumunuz varsa kullanın

:silent e scp://user@myserver[:port]//path/to/file.txt

:silentÖn bastırır Press Enter to Continuemesajı

ve

e scp://user@myserver[:port]//path/to/file.txtExremnote dosyasını düzenlemek için kullanılan mod komutudur.

BitVise SSHDWindows 10'da çalıştırma ve Ubuntu 16.04'te yayınlanan VIM kullanımı ile test edilmiştir


Bunun Press Enter to Continueilk yükleme için :w
olanları
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.