2011-04-18 9 views

उत्तर

38

एक टीआर में :colorscheme का उपयोग करना y-catchRandy has done के रूप में पर्याप्त हो सकता है यदि आप इसे लोड करना चाहते हैं तो यह मौजूद है और अन्यथा कुछ और करें। यदि आप और भाग में रुचि नहीं रखते हैं, तो एक साधारण :silent! colorscheme पर्याप्त है।

अन्यथा, globpath() जाने का रास्ता है। यदि आप वास्तव में करना चाहते हैं, तो आप filereadable() के साथ लौटाए गए प्रत्येक पथ की जांच कर सकते हैं।

" {rtp}/autoload/has.vim 
function! has#colorscheme(name) 
    pat = 'colors/'.a:name.'.vim' 
    return !empty(globpath(&rtp, pat)) 
endfunction 

" .vimrc 
if has#colorscheme('desert') 
    ... 
+4

'के लिए जा रहे हैं: चुप! colorcheme foo' मेरी आवश्यकताओं को बहुत अच्छी तरह से फिट करता है, धन्यवाद। – mat

8

आप अगर एक रंग योजना (जैसे schemename) मौजूद है की जाँच करने के filereadable समारोह इस्तेमाल कर सकते हैं: @ करने के लिए

if filereadable("/path/to/schemename.vim") 
    colo schemename 
endif 
+0

आपके उत्तर के लिए धन्यवाद! – ClosureCowboy

+0

मुझे क्या चाहिए – eddy147

25

एक वैकल्पिक: एक बार $VIMRUNTIME/colors/ के तहत (यूनिक्स ~/.vim/colors/ का उपयोग के लिए Win32,) ~/vimfiles/colors के तहत की जाँच करें और एक बार Eckes जवाब रंग-लोड और त्रुटि से निपटने के लिए प्रयास करने के लिए हो सकता है अगर यह मौजूद नहीं है:

try 
    colorscheme mayormaynotexist 
catch /^Vim\%((\a\+)\)\=:E185/ 
    " deal with it 
endtry 
+1

धन्यवाद। मुझे नहीं पता था कि आप एक। Vimrc में 'try-catch' कर सकते हैं! – ClosureCowboy

+0

क्या आप पकड़ नियमित अभिव्यक्ति वाक्यविन्यास के बारे में अधिक समझा सकते हैं? मुझे समझ में नहीं आता कि क्यों न केवल '/^E185: /' –

+0

मैंने बस 'सहायता पकड़' से उदाहरण का उपयोग किया क्योंकि मुझे लगता है कि यह सही त्रुटि प्रारूप होगा। –

6

मेरे विधि समान है,

if filereadable(expand("$HOME/.vim/colors/railscast.vim")) 
    colorscheme railscast 
endif 

यह एक छोटे से अधिक पूरे पथ हार्डकोड से मजबूत है।

संबंधित मुद्दे