HodalogHODALOGホームブログフロントエンドバックエンドDevOpsポエムお問い合わせこのサイトについてホームフロントエンドバックエンドDevOpsお問い合わせこのサイトについてVimでPythonの入力補完・構文チェック・自動整形を行う:2019-08-25わかってる、わかってるんです。Notebook、PyCharmだということは。VimでPythonのコーディングもできたらと思い、入力補完、構文チェック、自動整形ができるように設定しました。デバッグについてはもう少し改善が必要ですが、取り急ぎかなり良い環境になったので、情報をまとめます。事前準備youcompletemeはPythonで動作するので、必要に応じてパッケージをインストールする必要があります。Ubuntuのdockerなど、ミニマムな環境では下記5つのパッケージが必要でした。python3python3-pipbuild-essentialcmakepython3-devリンターやフォーマッターは下記のライブラリが必要なので、こちらも事前にインストールしておきます。autopep8入力補完youcompletemeは入力補完を実装するプラグインです。多くの言語で入力補完に対応しています。リアルタイムでの補完も可能なのでコーディングがかなり捗るようになると思います。コーディング能力向上のために敢えて入力補完を使わないスタイルを貫いている人もいますが、簡単にON/OFF切り替えもできるので、導入だけでもしておくのはありかなと思います。youcompletemeのインストールパッケージを導入後、youcompleteme内のinstall.pyを実行します。bundleの配置場所は環境によって異なるので、適宜場所を確認してから実行します。/root/.vim/bundle/youcompleteme/install.py下記は私が.vimrcに追記したyoucompleteme用の設定です。0pythonのバイナリファイルの指定は、これも環境によって異なるので注意が必要。1でリアルタイムでの入力補完がONとなります。構文チェック:リンターvim-flake8というプラグインで実装します。flake8はPythonのリンターの一つ。下記のツールを内包したパッケージです。scriptPEP8とPyFlakesのチェック、それから循環的複雑度をチェックできます。Vimのプラグインの設定にしたがってインストールすれば、そのまますぐに使用できる状態になります。自動整形:フォーマッターautopep8を使います。PythonのコードをPEP8方式(pycodestyle)に自動でフォーマットしてくれるツールです。リンターとフォーマッターの自動起動ファイル保存時にリンターとフォーマッターを自動で起動できるよう、.vimrcに下記設定を追加しました。:wでautopep8によるフォーマットが走ったあと、flake8による構文チェックが走ります。ENDデバッグ今回、デバッグ用にVdebugというプラグインを試してみました。Python以外の言語にも対応しているので汎用性の高いプラグインです。Pythonはpdbという標準のデバッガーがありますが、Vdebugではpydbgpというデバッグ用のツールを別途導入して使います。こちらのサイトからpydbgpのパッケージをダウンロード、解答し、pythonのライブラリが置かれているディレクトリへコピーします。/usr/lib/python3/pydbgp/上記コマンドはpython3を使用している場合のコマンドです。Komodo-PythonRemoteDebuggingのバージョンが8以上の場合は、python3lib(またはpythonlib)の中にあるdbgpディレクトとdbgp.clientを、pydbgpが置かれているディレクトリへ移動する必要があります。ライブラリの場所は環境によって変わるので、適切な場所をあらかじめ確認して実行します。pipでインストールすることもできるので、面倒な場合はそちらで試すのも良いかなと思います。komodo-python3-dbgpデバッグの実行デバッグを実行したいファイルをvimで開いて、F5を押下。その後、別ウィンドウでCLIを開き、下記コマンドを実行します。hogehoge.pypydbgpのバイナリファイルへのパスを指定し、ファイルを実行しています。dbgp.client”というエラーが出たら、dbgp.clientの配置場所に問題があるので見直します。コマンドが実行できたら、再びvimのウィンドウに戻り、F5を押下するとデバッガーが走ります。手間なので、printデバッグの方が簡単かもしれません^^;まとめここで設定した内容はGitHubでまとめているので、ぜひご覧ください。dockerのコマンド一発で起動できるようにしています。コメントをキャンセルメールアドレスが公開されることはありません。url次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。meHodaエンジニア。フロントからインフラまで広く浅く。至らない点は多いですがなんとかやっています。