ভিআইএম প্লাগইনে অজগর এবং পাইথন 3 উভয়কে সমর্থন করার মার্জিত উপায়


9

পাইথন 3 সমর্থন করার জন্য আমি সম্প্রতি আমার ভিআইএম প্লাগইন পরিবর্তন করার জন্য একটি টান অনুরোধ পেয়েছি। তবে এই পরিবর্তনগুলি আমার ম্যাকের ভিমে প্লাগইনকে ভেঙে দেয় যা পাইথনটি শুনতে পাচ্ছে।

python import sys

বনাম

python3 import sys

আমার প্লাগইনে স্ক্রিপ্টটি তৈরি করার জন্য কোনও সুন্দর পদ্ধতি রয়েছে যা এটি কোন বিবৃতিটি ব্যবহার করা উচিত তা সনাক্ত করে? কিছুটা এইরকম:

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

ধন্যবাদ।

উত্তর:


5

আপনি পাইথন স্ক্রিপ্ট rewriting এড়াতে চান তাহলে, এটি একটি পৃথক ফাইলে এবং ব্যবহার রাখা :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. পাইথন 3 পাওয়া যায় কিনা তা নির্ধারণের জন্য একটি ফাংশন সংজ্ঞায়িত করুন:

    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 "
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.