मैं बाहरी फ़ाइल से .vimrc कैसे पढ़ सकता हूं?


24

मैं .vimrcबाहरी फ़ाइल से किसी वैरिएबल के मान को पढ़ने के लिए संशोधित करना चाहूंगा । मैं यह कैसे कर सकता हूँ?

विशेष रूप से, एक मित्र और मैं अपनी .vimफ़ाइलों के साथ एक git रेपो साझा करते हैं, लेकिन हमारे कॉन्फ़िगरेशन में हम जो चाहते हैं उसमें कुछ छोटे अंतर हैं। इसलिए अधिकांश फ़ाइल सामान्य है, लेकिन हम यह निर्धारित करने के लिए उपयोग करते हैं कि क्या यह निर्धारित करने के लिए कि क्या उपयोगकर्ता-विशिष्ट अनुभागों को लोड करना है, जैसे:

let whoami = "user2"
if whoami == "user1"
...

हमारे आम .vimrcआउट ऑफ सोर्स कंट्रोल की जाँच करने के बाद , हम सभी को let whoamiअसाइनमेंट बदलना होगा ताकि हमारा अपना सेक्शन लोड हो जाए। इसके बजाय, मैं एक अलग फ़ाइल रखना चाहूंगा, जो हम में से प्रत्येक के लिए अलग हो सकती है, और जिसमें से विम उस चर मान को लोड करेगा।

शायद इस पर एक और कोण है: विल स्वचालित रूप से मेरी .vimनिर्देशिका में सभी फाइलों को पढ़ेगा ? यदि हां, तो हम प्रत्येक को यूज़रनेम नामक एक सिमलिंक लगा सकते हैं, और इसे एक बाहरी फ़ाइल से लिंक कर सकते हैं जो हम में से प्रत्येक के लिए अलग होगी।

जवाबों:


35

आपकी मुख्य .vimrc फ़ाइल में:

source otherVimScriptFilePath.vim

उसके बाद अपना चर कथन उस फाइल में डालें:

" otherVimScriptFilePath.vim
let whoami = "user1"

2
FYI करें - मेरी स्थिति में, यह लाइन let whoami = ""से ठीक पहले करने में मददगार sourceथा, ताकि अगर यह बाहरी फ़ाइल को लोड करने में विफल रहता है, तो चर मौजूद है और मुझे वह त्रुटि संदेश मिलता है जिसे हमने पहले सेट किया था कि चर सेट नहीं किया जा रहा है।
नाथन लॉन्ग

2
@GorillaSandwich: इसका उपयोग मैं अपनी विम्स आर्क पर अपनी विंडोज़ मशीन पर करने के लिए करता हूं क्योंकि विंडोज़ में प्रतीकात्मक लिंक नहीं हैं। मेरे पास एक SVN फ़ोल्डर है जिसमें यह और मेरी अन्य डॉट-फाइलें हैं। तो मैं सिर्फ एक _vimrc है कि svn फ़ोल्डर में असली एक है।
रॉबर्ट एस सियाकियो

@ गोरिल्लासैंडविच: silent! sourceभाग के लिए मेरा उत्तर देखें
akira

6

एक कोशिश / पकड़ का उपयोग करना

इस सवाल को पूछने के बाद, मैं एक बाहरी फ़ाइल लोड करने के लिए एक और उपयोग के मामले के साथ आया हूं: मशीन-विशिष्ट ट्विक्स।

चूँकि मैं दी गई मशीन पर ट्वीक्स बनाने या बनाने की आवश्यकता नहीं कर सकता, इसलिए मैं try/catchबाहरी फाइल को लोड करने के लिए उपयोग कर रहा हूं ; अगर ऐसी कोई फ़ाइल नहीं है, तो मैं इसे चुपचाप विफल होने देता हूं।

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

5

अंतिम प्रश्न का उत्तर देने के लिए, फ़ाइलें ~/.vimस्वचालित रूप से लोड नहीं होती हैं, लेकिन सभी फाइलें ~/.vim/pluginहैं।


2
और कुछ अन्य स्थानों के नीचे ~ / .vim ( after, autoload)
akira

4

आप :sourceकमांड का उपयोग करके अपनी ~ / .vimrc किसी अन्य फ़ाइल को लोड कर सकते हैं । उदाहरण के लिए, आप प्रत्येक अपने अद्वितीय कमांड ~ / .myvimrc में डाल सकते हैं और उन कमांड को लोड कर सकते हैं

source ~/.myvimrc

या, जैसा आप सोच रहे थे, आप प्रत्येक अपना नाम उस फ़ाइल में इस तरह डाल सकते हैं:

let user = "user1"

और फिर इसे अपने ~ / .vimrc में डालें:

source ~/.myvimrc
if user == "user1"
    " do this
elseif user == "user2"
    " do that
else
    echo "Invalid user"
endif

फ़ाइलों में अपना नाम डालने के बजाय, आप $ USER का उपयोग अकीरा के सुझाव के रूप में कर सकते हैं, या इस तरह सेट userकर सकते हैं whoami:

let user = substitute(system('whoami'), '\n', '', '')

विकल्प () फ़ंक्शन की आवश्यकता है क्योंकि सिस्टम के आउटपुट () में आमतौर पर अंत में एक '\ n' होता है।


whoamiखिड़कियों पर काम नहीं करता है
akira

@akira: सच है, लेकिन गोरिल्लासैंडविच यूनिक्स का उपयोग कर रहा है, न कि विंडोज का। $ USER विंडोज के साथ काम नहीं करता है, या तो, कम से कम विंडोज एक्सपी नहीं है।
गैरीजोन

बस कह रही है, विंडोज़ पर अपने $ USERNAME। मेनपॉइंट है: whoamiएक नई प्रक्रिया को जन्म देता है , जब आप अपने संपादक को खोलते हैं तो यह तेज होना चाहिए और न कि (बेकार) फिर से कई बार काम करना।
अकीरा

2

लॉग-इन उपयोगकर्ता का नाम $ USER पर्यावरण चर में उपलब्ध है। आप उस चर को आसानी से एक्सेस कर सकते हैं:

:echo $USER

इसलिए, बस उपयोग करें

execute "silent! source vimrc." . $USER

अपने vimrc में और अपने उपयोगकर्ता की विशिष्ट सेटिंग में रखें

vimrc.joe

या जो भी आपका लॉगिन नाम है


0

मुझे यकीन नहीं है कि आपका vimrc कैसा दिखता है, इसलिए यह संभव नहीं है, लेकिन अगर आपके और आपके दोस्त के हिस्से बड़े हिस्से हैं, तो आप उन्हें अलग-अलग प्लग-इन में तोड़ना चाहते हैं। आप ~/.vim/pluginउन्हें स्टार्टअप पर लोड करने के लिए निर्देशिका में फाइलें जोड़ सकते हैं । (वे वर्णमाला क्रम में लोड किए गए हैं - :scriptnamesजांच करने के लिए उपयोग करें।)

इस तरह से आप प्रत्येक के पास एक vimrc हो सकता है जो पूरी तरह से अद्वितीय है, लेकिन आपके सभी सामान्य कॉन्फ़िगरेशन प्लगइन्स में हैं। यदि आप उन्हें तार्किक रूप से तोड़ते हैं, तो यह दूसरों के साथ भी साझा करना आसान बनाता है।

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