मैं ssh के माध्यम से फ़ाइलों को दूरस्थ रूप से कैसे संपादित करूं?


82

मुझे कुछ सर्वर पर रखी गई कुछ फाइलों को संपादित करना होगा जो मैं ssh के माध्यम से पहुंचा सकता हूं।

मैं vimअपने कार्य केंद्र पर अनुकूलित में इन फ़ाइलों को संपादित करना पसंद करूंगा (मुझे vimदूरस्थ सर्वर पर सेटिंग्स बदलने का अधिकार नहीं है)। कभी-कभी मैं एक फ़ाइल को sublime textअन्य GUI संपादक के साथ संपादित करना चाहूंगा ।

बेशक, मैं इन फ़ाइलों को डाउनलोड कर सकता हूं, उन्हें स्थानीय रूप से संपादित कर सकता हूं और उन्हें सर्वर पर वापस अपलोड कर सकता हूं। क्या अधिक सुरुचिपूर्ण समाधान है?

जवाबों:


65

आप दूरस्थ फ़ोल्डर को sshfs का उपयोग करके फ़ाइल-सिस्टम के रूप में माउंट करके ऐसा कर सकते हैं। ऐसा करने के लिए, पहले कुछ आवश्यक वस्तुएँ:

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

अब, बढ़ते प्रक्रिया करें:

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

इसके बाद, बस घुड़सवार फ़ोल्डर में जाएं और अपने स्वयं के स्थानीय अनुकूलित विम का उपयोग करें।


4
अप्रत्याशित रूप से, इंस्टॉलेशन चरण उन वितरणों पर विफल हो जाएगा जो- debआधारित नहीं हैं और इसलिए उनके पास नहीं है apt-get। (किस मामले में, yumया zypperमौजूद हो सकता है।) उन्हें स्थानीय मशीन पर रूट की भी आवश्यकता होती है, जो उपलब्ध हो सकता है या नहीं। (यह कहने के लिए नहीं है कि यह एक बुरा समाधान है, लेकिन यह एक बड़ी शर्त के साथ आता है।)
उलरिच श्वार्ज़

4
ठीक है। पता लगा लिया। यह सब स्थानीय मशीन पर किया जाता है। ओएस एक्स के मामले में एक को स्थापित करना होगा osxfuseऔर sshfs। ये होमब्रेव ( brew install sshfsऔर brew cask install osxfuse, ऑक्सफ्यूज़.गिथुबीयो
प्रेरित

95

आप scpइस तरह से कर सकते हैं :

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

//सर्वर और पथ के बीच दो स्लैश पर ध्यान दें , जिन्हें सही तरीके से पूर्ण पथ को हल करने की आवश्यकता है। (पहला स्लैश वाक्यात्मक है, जबकि दूसरा स्लैश दूरस्थ उपयोगकर्ता की रूट डायरेक्टरी को हमेशा की तरह निर्दिष्ट करता है। होम डायरेक्ट्री पर शुरू करने के लिए, आप ऐसा करेंगे [:port]/~/path/to/file.txt।) [:port]वैकल्पिक है।

यह vim के netrw.vim मानक प्लगइन द्वारा नियंत्रित किया जाता है । कई अन्य प्रोटोकॉल समर्थित हैं।


6
हां, फ़ाइल को एक अस्थायी फ़ाइल के लिए पुनर्प्राप्त किया जाता है, जिसे सेव पर सर्वर पर अपलोड किया जाता है।
फ्लोइम स्वयं

1
धन्यवाद। हालांकि, मैं एक त्रुटि मिल गया है, जब फ़ाइल को बचाने की कोशिश:E382: Cannot write, 'buftype' option is set
करघा

2
आप :set buftype=""​व्यर्थ में प्रयास कर सकते हैं ।
फ्लोइम स्वयं

2
इसके अलावा, रिम ~/.ssh/configदूरस्थ मेजबान के साथ पढ़ेगा और हल करेगा vim scp://[host]/path
जंगरी

2
@stillanoob::e scp://...
फ्लोइम स्वयं

6

आपके कहने का मतलब यह है कि जब आप कहते हैं कि आपके पास विम सेटिंग्स को संपादित करने के अधिकार नहीं हैं, तो वैसे भी सर्वर पर विम का उपयोग करने का एक तरीका हो सकता है जिस तरह से आप चाहते हैं। यदि आप अपना उपयोगकर्ता नहीं बदल सकते हैं .vimrc(क्योंकि आप एक साझा उपयोगकर्ता के रूप में लॉग इन कर रहे हैं, उदाहरण के लिए) लेकिन आप अभी भी फ़ाइलें बना सकते हैं, इसे फ़ाइल के रूप में बना सकते हैं, कह सकते हैं, Loom.vimrcऔर फिर -uस्विच का उपयोग करके विम को कॉल करें :

vim -u ~/Loom.vimrc file_to_edit

आप तब भी एक उपनाम का उपयोग कर सकते हैं: alias vim='vim -u ~/Loom.vimrc'आपको सामान्य तरीके से विम का उपयोग करने की अनुमति देगा, और यह अभी भी आपकी कस्टम .vimrcफ़ाइल को लोड करेगा । आपके द्वारा लॉग आउट करने के बाद यह उपनाम जारी नहीं रहेगा, इसलिए आपको अपने अनुकूलित विम का उपयोग करके गलती से किसी और के बारे में चिंता करने की आवश्यकता नहीं है।


2

कितनी फ़ाइलों और किस प्रकार की फ़ाइलों को आप संपादित करने की उम्मीद कर रहे हैं, इसके आधार पर, यह शायद वही नहीं है जो आप यहाँ करना चाहते हैं, लेकिन मुझे लगता है कि यह ध्यान देने योग्य है। यदि आपको दूरस्थ सर्वर में फ़ाइलों को संपादित करना है, लेकिन आप अपने काम के स्टेशन में सब कुछ का उपयोग करना चाहते हैं, तो आप अपनी मशीनों में किसी प्रकार के संशोधन नियंत्रण प्रणाली का उपयोग करने के बारे में सोचना शुरू कर सकते हैं । इस तरह, आप अपनी पसंद की सॉफ़्टवेयर का उपयोग करके अपनी स्वयं की मशीन में अपनी स्थानीय प्रतियों को संशोधित कर सकते हैं, परिवर्तन कर सकते हैं, और फिर गंतव्य मशीन में स्थानीय प्रतियों को अपडेट कर सकते हैं। आप जिस भी सॉफ़्टवेयर के साथ सहज महसूस करते हैं, उसके साथ फ़ाइलों को संपादित करने के अलावा, आपके पास प्रत्येक फ़ाइल से संबंधित परिवर्तनों का इतिहास रखने का अतिरिक्त मूल्य है , जो हमेशा अच्छा होता है।

यहाँ केवल मामले में रिविजन कंट्रोल सॉफ्टवेयर की सूची दी गई है।


क्या आप किसी बदलाव के बारे में सुझाव दे रहे हैं जैसे कि बदलाव करना git, उसे किसी चीज़ की ओर धकेलना github, और बदलाव githubको अपने स्थानीय मशीन से खींचकर वहाँ बदलाव करना?
अल्फा_989

यह जटिल कोड परिवर्तनों के लिए संभव है .. लेकिन सरल कोड परिवर्तनों के लिए शायद .. क्या @FloHimself या उल्लिखित shivams को लागू करना आसान है ..
अल्फा_989

1

श्री पॉट्स के उत्तर पर विस्तार करने के लिए: आप ऊपर भी कर सकते हैं, फिर कुछ इस तरह से डाल दें ।bash_profile (या जो भी आपके शेल का उपयोग करता है):

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

जहां लूम आपका मूल उपयोगकर्ता नाम है जिसे आप लॉगिन करते हैं।

यदि आप एक साझा खाते के रूप में लॉग इन कर रहे हैं (और एक व्यक्तिगत खाता नहीं है तो sudo su - ing, तो वॉन न्यूमन आपकी आत्मा पर दया कर सकता है क्योंकि आप खो गए हैं।

मैंने इसे एक टिप्पणी में रखा होगा, लेकिन मैं कोड को बिल्कुल स्वरूपित नहीं कर सका।


0

यदि आपके पास पहले से चल रहे विम सत्र हैं

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

:silentसामने दबाने जाएगा Press Enter to Continueसंदेश

तथा

e scp://user@myserver[:port]//path/to/file.txtExरीमॉनेट फ़ाइल को संपादित करने के लिए मोड कमांड है।

BitVise SSHDविंडोज 10 पर चलने के साथ परीक्षण किया गया, और उबंटू 16.04 पर वीआईएम रनिंग का उपयोग किया गया


बस ध्यान दें कि यह Press Enter to Continueप्रारंभिक लोडिंग के लिए दबा है , लेकिन किसी भी बाद के लिए नहीं:w
स्पारहॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.