सेटिंग्स और प्लगइन्स जब रूट (`sudo vim`)?


15

यह वास्तव में निराशाजनक है जब मुझे किसी फ़ाइल को रूट और उपयोग के रूप में संपादित करने की आवश्यकता होती है sudo vim somefile.confऔर मैं अपनी किसी भी कीबाइंडिंग और सेटिंग्स और प्लगइन्स का उपयोग नहीं कर सकता।

क्या मुझे रूट के रूप में संपादित करने की आवश्यकता होने पर मेरे सभी अनुकूलन प्राप्त करने का एक तरीका है?

मैं अपने प्लगइन्स के लिए विम-प्लग का उपयोग कर रहा हूं।


5
एक साइड नोट पर: sudo vim fileबेहतर लिखा गया है sudo -e file(बशर्ते कि आप पर्यावरण चर सेट करें EDITOR=vim)।
lcd047

@ lcd047: आपको उस टिप्पणी को एक उत्तर में बनाना चाहिए
static_rtti

जवाबों:


15

Vim को रूट के रूप में खोलने के बजाय, आप केवल टी को रीडायरेक्ट करके रूट के रूप में सहेज सकते हैं। यहाँ एक उदाहरण है:

:w !sudo tee % > /dev/null

यह आपके .vimrc, I उपयोग में उर्फ ​​के लिए उपयोगी हो सकता है :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
इस के लिए उपयोगी है I did a bunch of editing and then realized I should have used sudoedit, लेकिन सामान्य मामले के लिए मैं sudo -e/ का उपयोग करने का सुझाव दूंगा sudoedit
जैमेसन

7

दो चीज़ें:

  1. के साथ $ sudo -e fileसंपादित करने के लिए उपयोग करें । यदि पहले से सेट नहीं है तो जोड़ें ।file$EDITORexport EDITOR=/path/to/vim$EDITOR

  2. वैनिला जाना आपके प्लगइन की लत से लड़ने का एक शानदार तरीका है।



3
ध्यान दें कि यह vim को रूट की तरह नहीं चलाता है, जैसे sudo vimकरता है। संपादन आपके सामान्य उपयोगकर्ता के रूप में होता है और फिर sudo मूल फ़ाइल को अपडेट करता है।
जैमेसन

नोट: दो समान विकल्प हैं sudo: -Eऔर -e-Eका अर्थ है "परिरक्षक वातावरण", और यह वह नहीं है जो आप चाहते हैं। -eबदले में, का अर्थ है "एक कमांड न चलाएं, लेकिन एक परिभाषित प्रक्रिया के साथ एक फ़ाइल को संपादित करें"।
iksemyonov

3

ऐसा लगता है कि आपको जो कुछ करना है वह सिंप्लिस रूट ~/.vimrcऔर ~/.vim/आपके पास है।

बस रूट के रूप में चलाएं:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

और यह करना चाहिए!

(पीएस मैंने यह अभी पता लगाया और किसी भी अन्य नॉब के साथ साझा करना चाहता था। कृपया मुझे बताएं कि क्या बेहतर तरीका है।)


1
यह अक्सर समस्याओं का कारण बन सकता है कि कुछ vim संबंधित फ़ाइलों को आपके घर निर्देशिका में रूट के रूप में लिखा जाएगा और बाद में आप अपने स्वयं के उपयोगकर्ता के रूप में अपने स्वयं के कॉन्फ़िगरेशन को चलाने की कोशिश कर त्रुटियों का सामना करेंगे।
कालेब

0

यदि आप समय से पहले जानते हैं कि आपको एक फाइल को रूट के रूप में संपादित करने की आवश्यकता है, तो कमांड का उपयोग करके sudoedit <file>या sudo -e <file>अपनी सामान्य संपादक प्राथमिकताओं के साथ ऐसा करने के लिए आपको एक विशेष वातावरण में सेटअप मिलेगा। फ़ाइल की एक प्रति बनाई गई है और इसे संपादित करने के लिए आपका संपादक लॉन्च किया गया है (आपके उपयोगकर्ता के रूप में)। जब आप फ़ाइल से बाहर निकलते हैं तो इसे मूल स्थान पर वापस कॉपी किया जाता है।

यह सबसे सुरक्षित और अनुशंसित तरीका है, लेकिन इस घटना में कि क) आपको समय से पहले एहसास नहीं होता है कि आपको रूट या बी के रूप में लिखना होगा) इन-इंक्रीमेंटल परिवर्तनों को संपादित करना और सहेजना चाहते हैं, आपको कुछ और चाहिए होगा। इस अंत तक sudo tee smpl द्वारा प्रस्तावित समाधान सही रास्ते पर है, लेकिन कुछ मामूली सुधार हैं जिन्हें किनारे के मामलों को संभालने के लिए किया जा सकता है। विशेष रूप से GUI बनाम कंसोल इंटरफ़ेस में sudo पासवर्ड प्रॉम्प्ट को हैंडल करने में अंतर कुछ ध्यान देने योग्य है।

इसे सेट अप करने का एक आसान तरीका vim-eunuch प्लगइन का उपयोग करना है । इसका यह विशेष मुद्दा है और कुछ अन्य उपयोगी चीजें एक आसान पैकेज में लुढ़की हुई हैं। उपयोग कॉलिंग के रूप में सरल है :SudoWrite। मैं यहां तक ​​कि एक छोटे से हैंडियर एक्सेस मैपिंग का उपयोग करता हूं:

cmap w!! call SudoWrite()

आपको किसी भी फाइल को रूट के रूप में लिखने की क्षमता मिलनी चाहिए :w!!


-1

sudo -E vim somefile.confसंपादित करने के लिए एक और विकल्प है , जो आपके पर्यावरण को संरक्षित करेगा, इसलिए आपके .vimrcऔर प्लगइन्स का उपयोग किया जाएगा।


अरे, अच्छी चाल! यह विया और बहुत सारी अन्य कमांड के लिए उपयोगी है।
रॉबी विंसीज

3
इसका एक ही साइड इफेक्ट है जो आपके कॉन्फ़िगरेशन को रूट के होम डायरेक्टरी में लिंक करता है: अर्थात् कोई भी विम ऑपरेशन या प्लगइन्स जो स्टेट डेटा लिखते हैं, आपके होम डायरेक्टरी में ऐसा करेंगे। ये फ़ाइलें जड़ से स्वामित्व में हैं और बाद में त्रुटियां पैदा करेंगी क्योंकि आपका सामान्य उपयोगकर्ता इनका उपयोग करना जारी नहीं रख सकेगा।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.