vim 플러그인에서 python과 python3을 모두 지원하는 우아한 방법


9

최근에 vim 플러그인을 변경하여 python3을 지원하도록 풀 요청을 받았습니다. 그러나이 변경 사항은 파이썬을 듣는 것처럼 보이는 Mac의 vim 플러그인을 손상시킵니다.

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 "
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.