2011-01-04 6 views
9

Inn ~/script.vim, मेरे पास है:रनटिमपैथ सेट करें, विम में एक अभिव्यक्ति से एक निर्देशिका जोड़ना?

set runtimepath+=string(substitute(expand("%:p"), 'script\.vim', '', 'g')) 

मैं .bashrc में एक उपनाम है: के रूप में इरादा

alias vimscript="vim -S ~/script.vim" 

string(substitute(expand("%:p"), 'script\.vim', '', 'g')) काम करता चल रहा है।

समस्या रनटिमपैथ अभिव्यक्ति में इसका उपयोग करते समय समस्या तब होती है जब मैं टर्मिनल में vimscript पर कॉल करता हूं जो script.vim पर कॉल करता है। जब मैं runtimepath की जांच करने के लिए vimscript द्वारा बुलाए जाने के बाद v12 में set rtp चलाता हूं, वांछित संलग्न स्ट्रिंग दिखाई नहीं दे रही है (लेकिन अन्य लोग वहां हैं)।

उत्तर

16

मैं @Laurence करने के लिए कुछ उसमें कुछ जोड़ा है गोंसाल्व उत्तर:

  1. वहां है भी ऑपरेटर «concat और आवंटित»: .=, तो

    let foo=foo.bar 
    

    रूप

    let foo.=bar 
    
  2. कोड

    let &runtimepath.=','.string(path) 
    

    ,'/some/path' & runtimepath को संलग्न कर देगा में लिखा जा सकता है, जबकि आप शायद ,/some/path की जरूरत ।

  3. मुझे लगता है कि आप runtimepath पर अपनी स्क्रिप्ट के पथ को जोड़ना चाहते हैं। अगर यह सच है, तो अपने कोड के रूप में

    let &runtimepath.=','.escape(expand('<sfile>:p:h'), '\,') 
    
    एक स्क्रिप्ट के अंदर

    , या

    let &runtimepath.=','.escape(expand('%:p:h'), '\,') 
    

    वर्तमान संपादन सत्र से (यह मानते हुए आप वर्तमान बफर में अपनी स्क्रिप्ट का संपादन कर रहे हैं) लिखा जाना चाहिए।

+0

आपका दृष्टिकोण बेहतर आईएमओ है, विकल्प का उपयोग करके वास्तव में बदसूरत था जब विस्तार पैरामीटर का उपयोग करना संभव था। धन्यवाद। –

2

set कमांड की दायां हाथ साइट अभिव्यक्ति नहीं है, यह एक शाब्दिक स्ट्रिंग है।

let का उपयोग करके आप विकल्प (set सेट) का उपयोग करके और & के साथ विकल्प नाम उपसर्ग कर सकते हैं। उदाहरण के लिए:

let &runtimepath=substitute(expand("%:p"), 'script\.vim', '', 'g') 

एक let साथ runtimepath को संलग्न करने के लिए आप की तरह कुछ कर सकते हैं: (। . स्ट्रिंग संयोजन ऑपरेटर है)

let &runtimepath=&runtimepath . ',' . substitute(expand("%:p"), 'script\.vim', '', 'g') 

+0

मुझे लगता है कि मुझे इन सभी अवधारणाओं को समझने के लिए सभी vim दस्तावेज, और कुछ पुस्तकें पढ़ने की जरूरत है। मैंने दूसरे विकल्प की कोशिश की, लेकिन अभी भी काम नहीं करता है: अब, स्ट्रिंग के बजाय (विकल्प (विस्तार करें (मेरे पास है 'जब मैं सेट आरटीपी चलाता हूं। मुझे क्या याद आ रही है? –

+0

@ कुछ व्यक्ति जो अभिव्यक्ति आपने' स्ट्रिंग() ', जो यह नहीं होना चाहिए।(मैंने बस अपनी अभिव्यक्ति क्रियापद को सही पैटर्न में कॉपी किया होगा।) मैंने आपकी अभिव्यक्ति के सही रूप का उपयोग करने के लिए उत्तर अपडेट किया है। यह अभी भी सरलीकृत हो सकता है, क्योंकि ज़ीएक्स ने किया है, लेकिन कम से कम आपको सही रास्ते पर ले जाना चाहिए। –

+0

@ कुछ बीटीडब्ल्यू, मैंने कभी भी एक विम बुक नहीं पढ़ा है। ': विम में सहायता 'वास्तव में काफी अच्छी है, लेकिन वहां * बहुत * नुक्कड़ और क्रैनियां हैं। मैं एक दशक से भी अधिक समय तक विम का उपयोग कर रहा हूं और मैं नियमित रूप से इसके बारे में नई चीजें सीखता हूं। –