Python 3のVimコード補完


26

Debian Jessieを実行しており、現在のvim-noxを使用しています(+ python -python3を使用)。Python 3のコード補完に苦労しているため、Python 3でプログラミングしようとすると苦労しています。

YouCompleteMeはPython3をまったくサポートしていません。jedi-vimはPython 3補完をサポートしますが、+ python3オプションを正しく理解している場合に限ります。Debian開発者からのいくつかの投稿から、Vimを+ python3フラグでコンパイルすることは実際には機能していないようです。そのため、python-modeプラグインが残っています。

python-modeがメンテナンスされていないように見えること(open pull-requestsとlast commitsを参照)と、現在masterブランチのロープに関する大きなバグがあるという事実に加えて、YouCompleteMeに干渉します。YouCompleteMeを完全に無効にした場合にのみ、Python 3のコード補完を機能させることができます。PythonファイルタイプのYCMをブラックリストに登録したり、PythonファイルのYCM補完を無効にしたりしても、vimを開くたびにYCM警告が表示されます。

だから私の質問は:

YouCompleteMeを非アクティブ化せずに、現在のDebianディストリビューションでPython 3オートコンプリートを動作させるにはどうすればよいですか(他のプログラミング言語で使用したいのですが)。メンテナンスされていないプラグインが、このような重要なプログラミング言語のコード補完のために現時点で唯一の選択肢であるのはなぜですか(Python 3は新しいものとは見なされなくなりました)。


2
「どうしてメンテナンスされていないプラグインが、このような重要なプログラミング言語のコード補完のために現時点で唯一の選択肢なのか」完了はほとんどすべての人にとって良いはずです。
マーティントゥルノイ

@Carpetsmokerに同意しました。VimにはそのままPythonの補完機能が搭載されており、Python3でも驚くほど機能します。実際、Vimに組み込まれているデフォルトのpythoncompleteは私が使用するものです。YCM、Jedi-vim、Pythonモードはありません。それでも+のpython3をしたい場合は私の答えを参照してください
akshay

pythoncompleteをチェックアウトしたところ、このスクリプトが通常のvimインストールに含まれていることを知りませんでした。それは間違いなく素晴らしい基本的なオプションです。pythoncompleteが関数呼び出しに括弧を追加する簡単な方法を知っていますか(例:print( ''))?
xt440

自分で修正する必要があると思います。ソースはこちらvim.orgで提供されています:vim.org/scripts/script.php?script_id=1542。確かに、それはかなり古いですが、私にはかなりうまくいきます。
akshay

回答:


17

理想的な方法は、Vimのソースを入手して自分でコンパイルすることです。

ステップ1:Debianのようなシステムの場合、必要なパッケージを入手します。

sudo apt-get build-dep vim

ステップ2:Vimのソースコードを複製します。

cd /tmp && git clone https://github.com/vim/vim.git && cd vim

ステップ3:構成、作成、インストール

./configure --with-features=huge --enable-multibyte --enable-python3interp \
    --enable-gui=gtk-2 --prefix=/usr

make VIMRUNTIMEDIR=/usr/share/vim/vim74
sudo make install

ステップ4:完了!+ python3をサポートしたvimの巨大なバージョンが必要です。また、クリップボードをサポートしているため、システムのクリップボードとGUIバージョンで使用できます。

もちろん、あなたがしたくないのconfigureフラグを削除するか、いくつかの中に追加することができます。YouCompleteMeは実際にソースからVimを構築する方法を説明する専用のかなりの長さのwikiあり、ここを


迅速な回答をありがとう。+ python3 / dynおよび+ python / dynをサポートしてvimを構築できました。しかし、それは私の問題を解決しません。vimを起動するとすぐに、YouCompleteMeが起動します(私の知る限り、常にpython2が起動します)。私が入る:echo has('python3')と私は得る0が、:echo has('python')戻る1。.vimrcには次のオプションがありますが、役に立ちませんlet g:ycm_path_to_python_interpreter = '/usr/bin/python3 let g:ycm_filetype_specific_completion_to_disable = { 'python' : 1 } let g:ycm_filetype_blacklist = { 'python' : 1 }
-xt440

ステップ1では、代わりに以下をお勧めしますapt-get build-dep vim
。– 200_success

@ 200_success、それがクリップボードのサポートに必要なx11のものも引き下げるかどうかはわかりません。確認するLinuxマシンはありません。
akshay

packages.debian.org/jessie/vimから.dsc、サイドバーにリンクされているファイルをご覧ください。あなたが提案したすべてのパッケージは、を除いてmercurial、直接または推移的にリストされてBuild-Dependsいると思います。特に、libgnomeui-devおそらくこれらの依存関係の多くを担当しています。
200_success

@ 200_success、結構、ありがとう!投稿を更新しました。
akshay

4

jedi-vimは、vimで+ python3をサポートするようになりました。私の.vimrcに次のオプションを追加しました let g:jedi#force_py_version = 3


4

これは何よりも自分自身へのメモとして書いていますが、多分これはいくつかの人にとって役に立つでしょう:Arch Linuxでは、python3でコンパイルされたvimのバージョンをインストールできます:

# pacman -S vim-python3
resolving dependencies...
looking for conflicting packages...
:: vim-python3 and vim are in conflict. Remove vim? [y/N] y

yと入力すると、既存のvimがpython3対応のvimに置き換えられます。

次に:

# pacman -S vim-jedi

python3のオートコンプリートをインストールします。


4

数週間以来、YouCompleteMeはJediHTTPラッパー経由でJediを使用してPython3の補完をサポートします。インストール手順に従ってYouCompleteMeのみをインストールし(jedi-vimをインストールする必要はありません)、次の行をに追加します.vimrc

let g:ycm_python_binary_path = '/usr/bin/python3'

これにより、YCMはPython3でJediを強制的に使用します(デフォルトでは、ycmdサーバー(Python2)で使用されるのと同じPythonインタープリターでJediを使用します)。

これは、Vimが+python3フラグ付きまたはフラグなしでコンパイルされている場合でも機能します。Python3のオートコンプリート(およびドキュメントの検索など)を取得できます。


1

私は絶えず2つのPythonプロジェクトを切り替えなければならない立場にいます。1つはPython 2を使用し、もう1つはPython 3を使用します。

最初に、追加のバージョンのvimをpython 3(vim3から開始)でコンパイルし、プラグインマネージャーとしてvundleを使用します。

私の.vimrcには:

Plugin 'davidhalter/jedi-vim' " for python3
Plugin 'Valloric/YouCompleteMe' " for python2


if has('python3')
    let g:loaded_youcompleteme = 1 " disables loading it! doesnt support python3
    let g:jedi#force_py_version = 3
    let g:pymode_python = 'python3'

vim3を実行するとyoucompletemeが無効になりますが、代わりにjedi-vimオートコンプリートがあります。私はそれを使い始めたばかりで、このブログ記事は、それらが一緒に互換性がないと言っていますが、私にとっては、オートコンプリート作品、jediのgo-to-definition作品、python-modeのpylint作品、起動時にプラグインはありません。これまでのところすべて良いです:)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.