सुपर उपयोगकर्ता के रूप में विम फ़ाइल लिखें?


10

यह एक प्रयोज्य समस्या है जो मेरे साथ अक्सर होती है:

मैं vim के साथ केवल-पढ़ने के लिए एक सिस्टम फ़ाइल खोलता हूं, यहां तक ​​कि इसे संपादित भी करता हूं, क्योंकि मैं पर्याप्त रूप से चौकस नहीं हूं, या क्योंकि सिस्टम पर विम बुरी तरह से कॉन्फ़िगर किया गया है। एक बार मेरे परिवर्तन हो जाने के बाद, मैं उन्हें एक अस्थायी फ़ाइल में लिखने या उन्हें खोने के कारण फंस गया हूँ, क्योंकि: w! काम नहीं करेगा।

क्या कोई vim कमांड (: W !!!) है जो आपको वर्तमान बफ़र को सुपर-यूज़र के रूप में लिखने की अनुमति देता है? (विम स्वाभाविक रूप से आपके sudo या su पासवर्ड के लिए पूछेगा)


संबंधित प्रश्न (बिल्कुल सटीक डुप्लिकेट नहीं): superuser.com/questions/23428/vim-sudo-vim-bad-idea .. superuser.com/questions/106865/… .. और SO से, stackoverflow-
क्विकोट

1
एसओ निश्चित रूप से एक द्वैध है, हालांकि दो एसयू प्रश्न sudoeditकमांड के साथ हल की गई एक अलग समस्या को संबोधित करते हैं । यह सवाल पहले स्थान पर टाइप करने और संपादक को शुरू करने के बाद ऊंचा करने पर भूल करने पर अधिक केंद्रित है।
हैवीड

जवाबों:


15
:w !sudo tee % >/dev/null`

स्पष्टीकरण: इसके साथ !, आप प्रोग्राम निष्पादित कर सकते हैं। इसके साथ इसे पूर्वनिर्मित करके: w, फ़ाइल की सामग्री (आपके पास जो सामान है, मूल फ़ाइल नहीं है, और अधिक प्राथमिक रूप से: बफर) मानक इनपुट पर कमांड को दी जाएगी। %फ़ाइल नाम से प्रतिस्थापित किया >/dev/nullजाता है , और इससे बचा जाता है कि सामग्री फिर से स्क्रीन पर मुद्रित हो जाती है (जो सामान्य व्यवहार है tee)।

मुझे इससे भी छोटा रास्ता मिल गया है। ddस्टडआउट के लिए प्रिंट नहीं करता है ताकि आप अशक्त चीज़ को बचा सकें।

:w !sudo dd of=%

​‍

उसी के लिए है :r, जो दिए गए कमांड के आउटपुट को सम्मिलित करता है, इसलिए आप उदाहरण के लिए उपयोग करके अपनी फ़ाइल में वर्तमान दिनांक सम्मिलित कर सकते हैं:r !date


बहुत बहुत धन्यवाद, आपने मेरे जीवन को बहुत बेहतर बनाया! (ब्रायन भी)
zimbatm

मैंने अभी दूसरी विधि जोड़ी है।
मैरियन

यह वास्तव में साफ है!
एन्थोनी जियोर्जियो

अछूतों के साथ काम नहीं करता है
क्रिश्चियन ब्रेबांट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.