7

.vimrcと私のvimプラグインUltiSnipsには、そのようなコードがたくさんあります

:py << EOF
print("Hi")
EOF

ここで、python3がVimにコンパイルされているかどうかを確認し、の代わりにをhas("python3")使用します。PythonコードをPython2と3の間で互換性を保つことは問題ではありません-問題は、vimに利用可能な場合は:py3を使用し、そうでない場合は:pyを使用するように指示することです。:py3:py

誰か良い考えがありますか?

4

2 に答える 2

6

vimのユーザー定義コマンドは単にplace-in-patter-and-evalステートメントであるという事実を利用して、次のように書くことができます。

if has("python3")
    command! -nargs=1 Py py3 <args>
else
    command! -nargs=1 Py py <args>
endif

次に、またはを通常使用するのと同じ方法でPythonコマンドを実行するために使用でき:Pyます。:py:py3

于 2012-01-25T13:42:04.597 に答える
0

python3またはpythonを1回チェックし、変数を設定するだけで、これを醜い方法で解決しました。

let g:_uspy=":py "   or ":py3 "

次に、<< EOF構文を船外に投げ、代わりにPythonの各行を

exec g:_uspy "print('Hello')"

これは大丈夫のようです。このgitblobの完全なソリューションを参照してください。

https://github.com/SirVer/ultisnips/blob/da49b4b7c4669bc462a98c9abc71b42d43d408bc/plugin/UltiSnips.vim

于 2012-01-25T12:12:41.363 に答える