सुरुचिपूर्ण प्लगइन और अजगर प्लगइन दोनों का समर्थन करने का सुरुचिपूर्ण तरीका


9

मुझे हाल ही में अपने vim प्लगइन को बदलने के लिए एक पुल अनुरोध प्राप्त हुआ, जिससे वह python3 का समर्थन कर सके। लेकिन ये परिवर्तन मेरे मैक पर विम के लिए प्लगइन को तोड़ते हैं जो अजगर को सुनने के लिए लगता है।

python import sys

बनाम

python3 import sys

क्या मेरे प्लगइन में स्क्रिप्ट बनाने के लिए एक सुरुचिपूर्ण विधि है जो यह पता लगाना चाहिए कि उसे किस कथन का उपयोग करना चाहिए? कुछ इस तरह:

if has('python')
   python import ...
elseif if has('python3')
   python3 import ...
else
   finish
endif

धन्यवाद।

जवाबों:


5

आप अजगर स्क्रिप्ट को फिर से लिखने से बचना चाहते हैं, तो यह एक अलग फाइल और उपयोग में डाल :pyfileया :py3fileबजाय।

let script_path = expand('<sfile>:p:h') . '/script.py'

if !has('python') and !has('python3')
   finish
endif

execute (has('python3') ? 'py3file' : 'pyfile') script_path

यह script.pyउसी निर्देशिका में लोड होगा ।


3

अजगर संस्करणों के भेद के लिए मेरी तकनीक एक अलग कमांड बनाने के लिए है (हालांकि यह मेरी .vimrcस्टार्टअप फाइलों में है, आप प्लगइन कोड के लिए आवश्यकतानुसार संशोधित कर सकते हैं।)

function! PyImports()
Py << EOF
import sys, os, .....
EOF
endfunction

if has('python')
  command! -nargs=* Py python <args>
  call PyImports()
elseif has('python3')
  command! -nargs=* Py python3 <args>
  call PyImports()
endif

3

यहां बताया गया है कि आप कैसे करते हैं

  1. यह निर्धारित करने के लिए एक फ़ंक्शन निर्धारित करें कि क्या python3 उपलब्ध है:

    function! s:UsingPython3()
      if has('python3')
        return 1
      endif
        return 0
    endfunction
  2. फिर सही अजगर आदेश प्राप्त करें:

    let s:using_python3 = s:UsingPython3()
    let s:python_until_eof = s:using_python3 ? "python3 << EOF" : "python << EOF"
    let s:python_command = s:using_python3 ? "py3 " : "py "
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.