Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

NeovimでモダンなPython環境を構築する

$
0
0

経緯

  • 転職してPythonメインの会社で働いてます
  • エディタハラスメントはなくなってVim使ってもいい会社です
  • VimでPythonをゴリゴリかける環境を作ろう

必須

会社に入ってからvimの設定をすべてneovim用に書き直しました。
今環境構築するならサクサク動くneovimでやってやりましょう。

  • neovim 0.1.7
  • macOS sierra 10.12.3

neovimのインストールについては過去記事を参照。
Ubuntu向けで書いたけどmacでもほぼ同様。 apt-getbrewに読み替えれば行けるはず
Ubuntuでzsh+neovimの環境設定

導入プラグイン

Pythonをvimで書きたいなら幾つかのプラギンは必須。
今回ご紹介するプラギンは次のとおりです。

  • dein.vim
  • denite.nvim
  • deoplete.nvim
  • vim-airline
  • nerdtree
  • vim-fugitive
  • deoplete-jedi
  • vim-quickrun
  • neomake
  • vim-virtualenv

dein.vim

Shougo/dein.vim

  • プラグインマネージャ
  • 暗黒美夢王の謹製プラギン。暗黒の力をあなたのVimに

沢山のプラグインを管理する上でプラグインのインストール、アップデートを補助するプラグインマネージャは必須。
以前は dein.vimの前身たる neobundleを使用していましたが、転職を機に乗り換えました。 *.tomlで設定ファイルを作成できるようになったため、プラグインの依存関係や遅延ロード設定は neobundle時代に比べ、格段に可読性がよくなりました。
暗黒美夢王は私が最もお世話になっているVimmerです。そう思っているのは私だけじゃないだろうけど。

denite.nvim

Shougo/denite.nvim

  • ファイルランチャーしかし、それだけにとどまらない脅威の汎用性
  • 暗黒美夢王の謹製プラギン。暗黒の力をあなたのVimに
  • neovim専用プラギン
  • Python3必須

主にファイルランチャーとして使用します。しかしそれだけではない。 deniteはありとあらゆるものをリスト表示、絞り込み、操作する統合プラットフォームです。
私の場合は、プロジェクト内のファイル一覧を表示→絞り込み→開くがメインで、ファイル内の文字列をGrep検索。関数リストの表示などがサブ用途となります。

ファイルのみならずありとあらゆるものを扱えるだけあって、その汎用性は高く。ソート順、検索エンジンやGrepコマンドの切り替え、選択した対象の操作などカスタマイズが豊富です。

本体動作が高速なのはもちろん、denite起動→絞り込み→開くの流れは自分の思考をそのまま反映するが如く、ファイル・行ジャンプを可能にします。使いこなせばエディットのスピードが加速することは間違いありません。

反面 deniteは設定が複雑になりがちです。helpを読みながら自分の身体に合わせたカスタマイズが必要となります。インスコ後すぐに爆速〜とはなりません。

deoplete.nvim

Shougo/deoplete.nvim

  • 自動補完システム
  • 暗黒美夢王の謹製プラギン。暗黒の力をあなたのVimに
  • neovim専用プラギン
  • Python3必須

自動補完プラグインです。そしてまた暗黒美夢王の暗黒の力です。
頭に自動補完システムと記載したのは、それはこのプラグインが他の自動補完プラグインとは一線を画すためです。

例えば、Pythonの自動補完プラグインならば jedi-vimというプラグインがあるのですが、コレはPythonの自動補完のみを実施するプラグインです。
対して deopleteは補完機能のベースのみを提供し、言語毎の独自の補完は、 deopleteのインタフェースに従った外部プラグイン source(と呼ばれるそうです)を使用して補完を追加する形式になります。
なおPythonの自動補完は、後述する deoplete-jediで追加されます。

こうして書いてみると、暗黒美夢王が作ってるものって、プラグインじゃなくてエコシステムなんじゃないのかなと思う。

vim-airline

vim-airline/vim-airline

  • ステータスバー改造プラギン
  • 導入するとあら不思議。vimのスタータスバーがとってもおしゃれになっちゃうぞ♪

ステータスバーを色々弄っておしゃれにしてくれます。
エディットにとても影響をあたえるかと聞かれたらそこまででもないです。しかし、エディットのテンションを上げるためには、「私はカッコイイエディタでエディットしてるんだ。」というカッコつけな何かが必要となります。

Normal,Insert,Visualの各モードで色変更、編集中のGitブランチの表示、env中のvirtualenvの表示、その他カーソル位置情報の表示などをしてくれます。おしゃれに。

nerdtree

scrooloose/nerdtree

  • ファイルエクスプローラー
  • 弱いvim使いの助っ人

IDEの左によくついてるエクスプローラーです。
deniteがあればファイルエクスプローラなんていらないじゃんって思ってたんですが。人間多くの事を覚えてはいられないもので、階層構造でファイルを見たい時って結構あるんですよね。

すぐにdeniteに打ち込むファイル名が浮かんでこないとき、nerdtreeを開くとそこには安心のファイル一覧が。

なお、nerdtree-git-pluginと後述するfugitiveを使用すれば。nerdtree上にファイル編集状態が表示されます。

「そんなのAtomやVsCodeなら最初からついとるわボケぇ」とか言わないで。心が折れる。

vim-fugitive

tpope/vim-fugitive

  • Gitクライアントプラグイン
  • vimから離れないでGitが使えます

基本的に私はずっとvimに居ないと心が落ち着かないとかいう人間ではなく、普通にCtrl+zでターミナルとvimを行き来したりするんで、そこまで必要か?と思っていました。
けどターミナルで操作するより圧倒的に有利な部分があって、それがfugitive:Gdiff:Gblameコマンド。

:Gdiffは、「しまったコレは編集前のほうが良かったぞ」と思う場合に使用する。
そういう場合にgitのdiffを表示してそこから元コードを引っ張ってくるという操作をしているのだが、
ターミナルに戻る→diff表示→コピー→vimに戻ってペースト

":Gdiff"の実行→ヤンク→ペースト
となる。かなりの速度向上。

:Gblameに関してもコードを見ている最中に、コレどうしてこうなってたっけとなったものがその場で:Glame一発で見れてログ情報も参照できる。
しかも:Gdiffも同様だが、vimのsyntax highlightが適用された状態で。速い。

deoplete-jedi

zchee/deoplete-jedi

  • deopleteのPython用sourceを追加するプラグイン
  • 作者はPython覚えて数ヶ月でコレを作ったらしい。すごい

前述したdeopleteに対してPythonの自動補完を追加します。
裏側ではPythonの静的解析ライブラリjedi(スター・ウォーズとは関係ない?)を使用して解析結果をdeopleteに渡しているようです

vim-quickrun

thinca/vim-quickrun

  • プログラムランナー

vim上でPythonのプログラムを実行することができます。
私の使い方は実行結果にエラーがなければBufferに出力、エラーがあればQuickFixに表示してそのままコードジャンプしています。
なお単体では非同期実行をサポートできないため、別途vimproc.vimを追加して、vim-quickrunにで設定する必要があります。

なお類似プラギンにasyncrunという非同期実行を、vimprocではなくvim本体の機能で行うプラギンがあるのですが、どうもパス周りをうまく読み込んでくれなかったため、インストールだけして使っていません。

neomake

neomake/neomake

  • linter実行プラグイン

Pythonにはpep8と呼ばれる構文ルールがあり、それを自動検出するためのlinterとよばれる静的解析コマンドがあります。neomakeではそのlinterを非同期実行し、実行結果をvim上にマーカー表示してくれます。

私の場合はpep8に加えpylintも検出してくれるflake8を実行させています。
なお、もともとは類似プラギンであるsyntasticを使用していましたが、こちらは非同期実行をサポートしていないため、neomakeに乗り換えました。

vim-virtualenv

jmcantrell/vim-virtualenv

  • virtual-envのパス自動追加プラギン

Pythonで開発しているならば、virtualenvを使用するシーンが多々あるはずです。その場合、virtualenvでしかインストールしていないライブラリなどをvim上で参照する必要があるでしょう。
このプラギンはそんな状況のためにあります。
virtualenvをactivateしてvimを起動すれば、virtualenvのライブラリを読み込んだ状態でvimが起動します。

私のVimrc

ホントは各プラギン毎に、抜粋したvimrcを記載したいのですが、力尽きたのでまた時間があるときに更新します。
lighttiger2505/.dotfiles

最後に

vimで仕事をして1ヶ月ちょいを経てこれまで趣味レベルと比べて、かなり実用的な環境が整ってきたので、この機会にご紹介しようかと。

こうして外に晒してみたら、俺のほうがもっといいvimだっという人もいるかと思いますので、教えてくれたらうれしいです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>