VIM के कई उदाहरणों के बीच कमांड इतिहास को कैसे हल किया जाता है?


15

विम पूर्व आदेशों का एक इतिहास (के माध्यम से सुलभ रहता है :और q:), और छोड़ने के बाद कि इतिहास बनी हुई है।

यदि मैं विम (एक ही उपयोगकर्ता, एक ही घर निर्देशिका) के कई उदाहरण चलाता हूं, तो विम कमांड इतिहास के बीच मध्यस्थता कैसे करता है? ऐसा लगता है कि जीत से बाहर निकलने की आखिरी प्रक्रिया। वहाँ सभी उदाहरणों के आदेश इतिहास रखने के लिए एक रास्ता है?


1
वास्तव में? यह इतिहास मेरे लिए छोड़ने के बाद कायम नहीं है। (विम 7.4.52, Ubuntu 14.04)
दरवाज़े

3
@Doorknob सुनिश्चित करें कि आपका ~/.viminfoस्वामित्व आपके पास है। एक सामान्य गलती लोगों को चलाने के लिए है sudo vim ..., अगर आपने पहले अपने उपयोगकर्ता के रूप में विम नहीं चलाया है, तो ~/.viminfoरूट के रूप में बनाया जाएगा । यदि यह समस्या है, तो मैं सुझाव देना चाहता हूं कि विशेषाधिकार प्राप्त फ़ाइलों का उपयोग करें sudoeditया sudo -eसंपादित करें।
जामसेन 22

@ जसमेसन हू, ऐसा प्रतीत होता है कि वास्तव में समस्या थी; chown'मेरे पास .viminfo वापस अपने आप को यह तय की। (यह निश्चित नहीं है कि इसका स्वामित्व कैसे जड़ में बदल गया है, क्योंकि मैंने हमेशा उपयोग किया है sudoedit, लेकिन ओह अच्छी तरह से।)
डॉर्कनोब

जवाबों:


10

आपके शीर्षक प्रश्न का उत्तर वही है जो आपने देखा है। उपयोगकर्ता पुस्तिका से:help 21.3

जब आप Vim को कई बार चलाते हैं, तो अंतिम एक एक्सटिंग अपनी जानकारी संग्रहीत करेगा। इससे ऐसी जानकारी हो सकती है जो पहले खो जाने के लिए संग्रहीत विम्स से बाहर निकलती है। प्रत्येक आइटम को केवल एक बार याद किया जा सकता है।

हालाँकि, viminfo फ़ाइल का फ़ाइल नाम (जहां कमांड इतिहास संग्रहीत है, वैश्विक निशान और रजिस्टर सामग्री जैसी अन्य चीजों के बीच, यदि कॉन्फ़िगर किया गया है) परिवर्तनशील है! इसका मतलब यह है कि आप विभिन्न परियोजनाओं या विम के उदाहरणों के लिए अलग-अलग 'इतिहास' स्थापित कर सकते हैं। यह मानते हुए कि आप प्रति प्रोजेक्ट एक से अधिक vim उदाहरण नहीं चलाते हैं, vimrc (या अन्य प्रोजेक्ट सेटिंग्स प्लगइन) के माध्यम से viminfo फ़ाइलनाम का प्रबंधन करना इसे संभालने का एक शानदार तरीका है।

सेटअप वैकल्पिक viminfo फ़ाइलें

प्रोजेक्ट स्तर प्रबंधन के लिए, हम आपके viminfo को एक अलग फ़ाइल में सहेजने के लिए vim को कॉन्फ़िगर करना चाहते हैं। यह छोड़ने से पहले या आपके vimrc द्वारा चल रहे vim के भीतर किया जा सकता है, उदाहरण के लिए, आपके vimrc में ऐसी लाइनें हो सकती हैं जो किसी प्रोजेक्ट से संबंधित किसी विशेष निर्देशिका का पता लगाती हैं।

:set viminfo+=nPath/to/custom/viminfofile

Vimrc का स्वचालित रूप से निर्देशिका के आधार पर सेट करने का एक उदाहरण:

 if getcwd() == "/projects/projA"
     set viminfo+=n~/.viminfo-projA
 endif

उपरोक्त का परिणाम यह है कि परियोजना-विशिष्ट इतिहास को स्टार्टअप पर लोड किया जाएगा और बाहर निकलने पर बचाया जाएगा, अगर विम को / प्रोजेक्ट्स / प्रोजा निर्देशिका में लॉन्च किया गया है।

स्टार्टअप के दौरान एक वैकल्पिक viminfo लोड करें

यह उस मामले के लिए अच्छा है जहां आप अपने इतिहास को किनारे पर रखना चाहते हैं और बाद में इसे लोड कर सकते हैं, बिना इसे परियोजना स्तर पर प्रबंधित किए।

सबसे पहले, इतिहास को बचाने के लिए, आप बाहर निकलने से पहले viminfo विकल्प को ऊपर जोड़ते हैं। फिर इतिहास को लोड करने के लिए, -i विकल्प के साथ विम लॉन्च करें

vim -i Path/to/custom/viminfofile

यदि आप viminfo फ़ाइल को सहेजने के लिए vim से बाहर नहीं निकलना चाहते हैं, तो आप :wv( :wviminfo) का उपयोग कर सकते हैं । यह ऊपर दिए गए सेटिंग के अनुसार विम को बाहर निकाले बिना viminfo फ़ाइल को बचाता है। और, आप :wv SomeOtherFileउस स्थान पर सहेजने के लिए भी कर सकते हैं जो viminfo विकल्प में सेटिंग के समान नहीं है। यह बाहर निकलने पर उपयोग करने के लिए फ़ाइल नाम सेट करने से अधिक सुविधाजनक हो सकता है, लेकिन एक बार बाहर निकलने के बाद डिफ़ॉल्ट फ़ाइल का उपयोग करने से रोकना नहीं है।

उदाहरण के लिए, पहले विम में:

:wv ~/customInfo

और दूसरे टर्मिनल में:

vim -i ~/customInfo

या, यदि कोई दूसरा विम पहले से ही चल रहा है और आप viminfo को लोड करना चाहते हैं:

:rv ~/customInfo

ध्यान दें कि :wvऔर :rvफ़ाइल का नाम नहीं बदलना vim बाहर निकलने पर बचाएगा और न ही स्टार्टअप के दौरान पढ़ी गई फ़ाइल का नाम।

अतिरिक्त जानकारी

विवरण set viminfo+=nSomePath: हम नामित विकल्प को समायोजित करने के लिए सेट कमांड का उपयोग करते हैं viminfo+=दर्शाता है कि हमने विकल्प नहीं परिवर्तन सब कुछ करने के लिए संलग्न करना चाहते हैं। हम उस nविकल्प को जोड़ते हैं जो viminfo के लिए फ़ाइल नाम निर्दिष्ट करता है। nहमारे पास तुरंत बाद SomePathजो viminfo को बचाने के लिए उपयोग किया जाने वाला फ़ाइल नाम होगा।

के लिए प्रलेखन wv( :help wv) इंगित करता है कि यह कमांड पहले viminfo फ़ाइल को पढ़ेगा, फिर पुरानी और नई जानकारी के बीच विलय करेगा। अब तक मुझे इस बारे में कोई जानकारी नहीं है कि इस मामले में विलय कैसे काम करता है, लेकिन मुझे लगता है कि यह अज्ञात फ़ाइलों और रजिस्टरों के लिए निशान रखता है जो वर्तमान सत्र में सेट नहीं हैं।

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