2013-05-22 2 views
5

... या उस मामले के लिए किसी भी मोड में।यह पता लगाने के लिए कि क्या विम प्रतिबंधित मोड में चल रहा है?

मैं सिर्फ लोड होने से कुछ एक्सटेंशन को रोकने के लिए जब ऐसा है चाहता हूँ, कुछ की तरह:

if ! currentmode('restricted') 
    Bundle('some-extension') 
endif 

उत्तर

5

आप सही हैं; एक विशेष चर जैसे v:vimmode सहायक होगा, लेकिन मुझे नहीं लगता कि वर्तमान में ऐसी कोई चीज़ मौजूद है। vim_dev mailing list पर इसे क्यों न उठाएं?

इस बीच, आपको प्रतिबंधित मोड में प्रतिबंधित किसी चीज़ का आह्वान करने के परिणामस्वरूप मोड का पता लगाना होगा। मेरे सबसे अच्छे विचार है कि है सफलता पर कम से कम दखल एक खाली फ़ाइल नाम के साथ writefile() लागू होता है:

restricted-mode विकलांग बाहरी आदेश (भी कुछ संबंधित कार्य:

silent! call writefile([], '') 
" In restricted mode, this fails with E145: Shell commands not allowed in rvim 
" In non-restricted mode, this fails with E482: Can't create file <empty> 
let isRestricted = (v:errmsg =~# '^E145:') 
2

मुझे यकीन है कि अगर यह एक अच्छा विचार है नहीं कर रहा हूँ)। अगर हम आरवीआईएम में बाहरी कमांड या कुछ निश्चित कार्यों को कॉल करते हैं, तो हमें त्रुटि E145 मिलती है।

तो शायद आप system() के माध्यम से कुछ डमी बाहरी कमांड को कॉल कर सकते हैं, फिर अपवाद E145 को पकड़ें। भेद करने के लिए कि यह प्रतिबंधित मोड में है या नहीं। जैसे

try 
    call system("echo x") "or even call system("") 
catch /E145/ 
"your codes 
endtry 

आशा है कि यह मदद करता है

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

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