विम त्रुटि E138: viminfo फ़ाइल $ HOME / .viminfo नहीं लिख सकता!


20

मुझे डर है कि मैं कुछ अजीब नहीं बल्कि कुछ में भाग गया हूं। जब मैं एक फ़ाइल को सामान्य रूप से खोलता हूं vim README.txt, तो सब कुछ ठीक है। लेकिन sudo vim README.txtफ़ाइल खाली होने पर, और मुझे E138: Can't write viminfo file $HOME/.viminfo!बाहर निकलने की कोशिश करने पर एक त्रुटि देता है ।

मुझे संदेह .viminfoथा कि फ़ाइल भ्रष्ट थी, इसलिए मैंने इसे हटा दिया। यह समस्या बनी हुई है। क्या कोई मदद कर सकता है?


क्या आप दौड़ते समय परिणाम पोस्ट कर सकते हैं ls .viminf*?
congonglm

Viminfo फ़ाइल पर अनुमतियाँ क्या हैं? का आउटपुट क्या है ls -la .vininf*?
दनिर

जवाबों:


29

जब आप चलाते हैं sudo vimतो आप जड़ के रूप में शुरू करते हैं। इसका मतलब है कि यह viminfo फ़ाइल / रूट में समस्या है। आपको करना चाहिए rm /root/.viminf*

यह सुनिश्चित करने के लिए, sudo vimइस कमांड को चलाएं और निष्पादित करें :!echo $HOME:। इससे आपको पता चलेगा कि आपकी होम डायरेक्टरी / रूट है।

मेरा सुझाव है कि आप विम को रूट के रूप में न चलाएं, बल्कि उपयोग करें sudoedit। यह एक अधिक सुरक्षित समाधान है क्योंकि संपादक रूट के रूप में नहीं चल रहा है। आप कभी नहीं जानते कि एक प्लगइन क्या कर सकता है। इसके अतिरिक्त यह आपको अपनी सेटिंग्स और प्लगइन्स का उपयोग करने की अनुमति देता है और न कि विम्स आर्क में। sudoeditवही चल रहा है sudo -e। sudoedit फ़ाइल की एक अस्थायी प्रतिलिपि बनाकर काम करता है, जो कि इनवोकिंग उपयोगकर्ता (आप) के पास है। जब आप संपादन समाप्त करते हैं, तो परिवर्तन वास्तविक फ़ाइल में लिखे जाते हैं और अस्थायी फ़ाइल हटा दी जाती है।

अंगूठे के एक सामान्य नियम के रूप में: यदि आवश्यक न हो तो चीजों को जड़ से न चलाएं।


मुझे लगता है कि आपने मुझे नोट के साथ चिंता के एक समूह से बचाया होगा, "यह एक अधिक सुरक्षित समाधान है क्योंकि संपादक रूट के रूप में नहीं चल रहा है। आप कभी नहीं जान सकते कि एक प्लगइन क्या कर सकता है। " मुझे विश्वास था कि मैंने सब सोचा था। कमजोरियों, लेकिन मैं गलत था।
bldldave025

14

मुझे हर निकास पर यह त्रुटि मिली। मैंने उपयोग नहीं किया sudo। इसने स्पष्ट रूप से मेरे उपयोगकर्ता होम डायरेक्टरी का उल्लेख किया है:

E138: Can't write viminfo file /Users/henrik/.viminfo!

निकालने ~/.viminfoसे त्रुटि ठीक नहीं हुई।

पता चलता है कि मेरे पास viminfo अस्थायी फ़ाइलों का एक गुच्छा था, और उन मुद्दों को हटा दिया:

 ls ~/.viminf*      # If you want to see the files.
 rm -rf ~/.viminf*  # Remove them.

इसका समाधान यहां मिला ।


5

:wqडिस्क पर एक फ़ाइल की कोशिश करते समय मुझे वही त्रुटि मिली जो पूरी तरह से भरी हुई थी। यदि आपको यह संदेश प्राप्त होता है, तो आप अपने उपलब्ध डिस्क स्थान की जांच करना चाह सकते हैं।


3

घर निर्देशिका बनाने के लिए एक बहुत अधिक क्लीनर तरीका कंकाल का उपयोग करना होगा जो लिनक्स आपके लिए उदाहरण के लिए प्रदान करता है।

sudo cp -a /etc/skel /home/usernmae && sudo chown -R usernmae:usernmae /home/usernmae

1
मुझे डर है कि सवाल घर निर्देशिकाओं के निर्माण के साथ बहुत कम है ...
जॉन डब्ल्यूएच स्मिथ

.Viminfo फ़ाइल को सहेजने में सक्षम होने के लिए आपको एक होम डायरेक्टरी बनाने की आवश्यकता है, इसलिए हाँ उपरोक्त कमांड लागू है।
रिक

1
अनगिनत कारण हैं कि यह फ़ाइल मौजूद नहीं है, इससे पहले कि आप इस तरह के निष्कर्ष पर पहुंच सकें। एक होम डायरेक्टरी की अनुपस्थिति शायद केवल एक लापता फ़ाइल की तुलना में बहुत अधिक परेशानी का कारण होगी; इस कारण से मैं "अपने घर निर्देशिका बनाने" के साथ किसी भी "लापता फ़ाइल" सवाल का जवाब दे सकता हूं। :)
जॉन डब्ल्यूएच स्मिथ

1
+1 मेरे मामले में, यह त्रुटि ठीक इसलिए हुई क्योंकि मैं एक फ़ाइल को एक ऐसे उपयोगकर्ता के रूप में संपादित कर रहा था जिसके पास होम डायरेक्टरी नहीं थी।
ज़ोल्टन

3

मेरे लिए मुद्दा यह था कि मैंने अपने घर की निर्देशिका को एनएफएस माउंट के अंदर स्थान पर बदल दिया था। किसी कारण से, यह निर्देशिका के मालिक के परिणामस्वरूप "कोई नहीं" हो गया। "अन्य" के लिए लिखने की अनुमति जोड़ने से समस्या हल हो गई क्योंकि मैं स्पष्ट रूप से फ़ाइल का मालिक नहीं था।

chmod o+w ~/.viminfo

1
क्या आप कृपया अपना उत्तर स्पष्ट कर सकते हैं। ऑनलाइन जवाब एसई में अच्छे नहीं गिने जाते हैं
रोमियो निनोव

2
अन्य लेखन अनुमतियों को जोड़ने में आपको मदद मिली। शायद आपने अपनी खुद की फाइल नहीं बनाई थी?
जेफ स्कालर

यह मेरे लिए काम करता है। मुझे लगता है कि मेरा ".viminfo" उपयोगकर्ता "रूट" द्वारा बनाया गया था और यदि उपयोगकर्ता "उबंटू" इसे संशोधित करने की कोशिश करता है, तो उसे एक लिखित अनुमति की आवश्यकता है। संक्षेप में, "-rw-r - r--" बन जाता है "-rw-r - rw-"।
पन्नाधाय

0

सबसे अधिक संभावना यह हो रही है क्योंकि होम डिअर डिस्क स्थान से बाहर चला गया है और कोई भी नया विम ऑपरेशन .vvfo फ़ाइल में लिखने में असमर्थ है।


3
यह थोड़ा दूर की कौड़ी लगती है: क्या आपके पास इसके लिए कोई सबूत है?
जसोन्व्रीयन

यह एक संभावना है, हाँ।
नेड64

0

मेकफाइल की सामग्री को अपडेट करते समय मेरे पास एक ही मुद्दा था। मुझे एक स्थानीय चर की आवश्यकता थी और इसे नाम देने का फैसला किया HOME, इसलिए मैंने लाइन में प्रवेश किया HOME=2.154। यह vim-HOMEसेटिंग को गैर-मौजूदा निर्देशिका द्वारा प्रतिस्थापित करने का कारण बनता है । HOMEअन्य उपयोग के लिए चर का उपयोग न करें।


1
कृपया ध्यान दें कि HOMEएक पूर्वनिर्धारित पर्यावरण चर है और इसे फिर से परिभाषित करना आमतौर पर एक अच्छा विचार नहीं है।
बरुण

0

मुझे लगता है कि यह केवल linux / vi के पुराने संस्करणों पर लागू हो सकता है, लेकिन मुझे जो मिला वह यह था कि फ़ाइल नाम /root/.viminfa.tmp ... /root/.viminfzmp और। के साथ रूट के होम डायरेक्टरी में अस्थायी फाइलें थीं। कि उनमें से 26 कई वर्षों के टाइमस्टैम्प के साथ थे। हम वर्णमाला के अक्षरों से बाहर भाग गए थे क्योंकि ऑज़ को लिया गया था। मैंने उन सभी फाइलों को हटा दिया और समस्या गायब हो गई। बेशक हेनरिक # rm -rf ~/.viminf* इस समस्या को ठीक करेंगे।


0

ऐसा लगता है कि आपने पर्यावरण चर साफ़ कर दिए हैं।

यह करो:

निर्यात घर = / जड़

इससे आपकी समस्या का समाधान होना चाहिए।


0

मुझे यकीन नहीं है कि मैं खुद इस परिदृश्य में आया था क्योंकि मुझे किसी भी फाइल का उपयोग करने की याद नहीं है, sudo vimलेकिन प्रत्येक :qफ़ाइल पर मुझे एक समान समान मिल रहा है, '' viminfo नहीं लिख सकता है।

rm ~/.viminfoयह हल नहीं हुआ और ~/.vim/खाली था।

chmod 666 ~/.viminfoविम में एक फ़ाइल से बाहर निकलने पर उस चेतावनी संदेश को हल किया। हालांकि मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है? यह समझ में आता है कि यह चेतावनी क्यों बंद कर दी गई है ।viminfo rw ------ पहले थी और मुझे लगता है कि vim कमांड इतिहास के साथ लिखा जा रहा है।


0

मैं अपने परिदृश्य, यह /root/.viminfoपूरी तरह से फ़ाइल की अनुपस्थिति थी । जब मैंने फ़ाइल को छुआ, त्रुटि बंद हो गई और फ़ाइल को विम से बाहर निकलने पर अपडेट किया गया। पुनश्च: यह विंडरिवर एम्बेडेड लाइनक्स है।

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