मैं अपने .vimrc में वर्तमान ऑपरेटिंग सिस्टम को कैसे अलग कर सकता हूं?


20

मैं ओएस एक्स और विंडोज दोनों पर विम का उपयोग करता हूं, लगभग समान कॉन्फ़िगरेशन के साथ।

मैं .vimrcदो ऑपरेटिंग सिस्टम पर समान उपयोग करने में सक्षम होना चाहता हूं , लेकिन कुछ चीजें हैं जिन्हें मुझे अलग-अलग कॉन्फ़िगर करने की आवश्यकता है।

मैं अपनी .vimrcफ़ाइल में क्या जोड़ना चाहूंगा :

:if <windows>
  "some windows-specific settings here
:elseif <os x>
  "some os x-specific settings here
:endif

लेकिन मैं क्या के लिए उपयोग करने के लिए पता नहीं है <windows>और <os x>

क्या यह संभव है?

जवाबों:


30

एनबी हालांकि दोनों पिछले जवाबों ने मुझे यह जानने के लिए पर्याप्त जानकारी दी कि समस्या को कैसे हल किया जाए (और मुझ से प्राप्त), न तो वास्तव में पूर्ण उत्तर दिया। ताकि एक ही प्रश्न वाले अन्य लोगों को अनुसंधान न करना पड़े, मैं अपना उत्तर जोड़ रहा हूं। हालाँकि, अगर @googletorp या @Azz ने इस जानकारी को शामिल करने के लिए अपने उत्तर को संपादित किया है, तो मैं अपना उत्तर हटा दूंगा और उनकी बात मान लूंगा।

करने के लिए उत्पादन :h feature-listपता चलता है कि आप का उपयोग करने में सक्षम होना चाहिए has("win32")और has("macunix"), लेकिन बाद विम के संस्करण में काम नहीं करता ओएस एक्स में शामिल (यह करता है , तथापि, MacVim में काम करते हैं।)

यहाँ मैं का उपयोग कर समाप्त हो गया है:

if has("win32")
  "Windows options here
else
  if has("unix")
    let s:uname = system("uname")
    if s:uname == "Darwin\n"
      "Mac options here
    endif
  endif
endif

ध्यान दें कि has("win32")64 बिट विंडोज पर 64 बिट विम में भी, मेरे लिए काम किया।

आप यूनिक्स के अन्य स्वादों को अलग करने के unameलिए if has("unix")ब्लॉक के भीतर भी इसी तरह के परीक्षणों का उपयोग कर सकते हैं । बस चलाने unameया uname -aकमांड-लाइन से यह देखने के लिए कि आपको क्या तुलना करने की आवश्यकता है s:uname। यह भी देखें :h matchstr()कि क्या आपको unameआउटपुट के सिर्फ एक हिस्से की तुलना करनी है ।


1
रिकॉर्ड के लिए: MSYS2 से vim में ("यूनिक्स") 1 है, में ("win32") 0 है और है ("win32unix") 1. इसलिए इसे अलग करने के लिए ("win32unix") का उपयोग करें।
user31389

4

आप यहां देख सकते हैं

असल में, आप या तो उपयोग कर सकते हैं has(), system():

let os = substitute(system('uname'), "\n", "", "")
if os == "SunOS"
  ..
endif  

2

ऐसा लगता है कि आप क्या कर रहे हैं, मुझे यह समझ में नहीं आता है इसलिए मैं आपको लिंक कर दूँगा।

/programming/2842078/how-do-i-detect-os-x-in-my-vimrc-file-so-certain-configurations-will-only-apply



1
@ रीच: सभी एसयू डेटा को क्रिएटिव कॉमन्स एट्रीब्यूशन शेयरएलाइ के तहत लाइसेंस दिया जाता है, जिसका वे पालन करते हैं।
डैनियल बेक

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