Diary over Finite Fields

515ひかるの日記と雑文

個人的NeoVim環境(Python編)

Pythonの開発環境

今日は開発環境について書きます。なんとなくまとめたことがないことに気づいたので。

前提

  • プラグインマネージャーは dein.vim を使用しています。
  • プラグインのインストールなどは、 toml ファイルで管理しています。このへんの詳細は述べません。
  • リポジトリはGitHub - m16Takahiro/neovimfiles at ubuntu-gnomeです。

github.com

コード補完

NeoVimユーザーでコード補完をしている人には知名度が高いと思いますが、deoplete.nvim と deoplete-jedi を使用しています。

github.com

github.com

[[plugins]]
repo = 'Shougo/deoplete.nvim'
if = 'has("nvim")'
on_i = 1
hook_source = '''
let g:deoplete#enable_at_startup = 1
'''
hook_post_source = '''
let g:deoplete#omni_patterns = {}
'''

[[plugins]]
repo = 'zchee/deoplete-jedi'
on_i = 1
on_ft = 'python'

こんな感じで設定をしておくと補完内容が出てきます。

f:id:hikaru515:20170625041415p:plain

スニペットはGitHub - Shougo/neosnippet.vim: neo-snippet plugin contains neocomplcache snippets sourceを使っています。特にソースの追加などはしていません。

静的解析

非同期でシンタックスチェックができるものを最近導入しました。

github.com

保存などのイベントがなくとも勝手に解析されます。まぁまぁ早いです。

pylintでチェックしたくて設定を書いているのですがpep8しか反応してくれていない気がする。。*1

コードフォーマット

Vimのプラグインを介さずとも、Vimからコマンドを呼ぶことでフォーマットしている。フォーマッターはyapfを使用している。

github.com

長い行ががっつり改行されたり、コンマのあとのスペースとかかってによしなにしてくれるので楽。~/.config/nvim/init.vimに、

autocmd FileType python nnoremap <leader>y :0,$!yapf<Cr>

と書くことで にマッピングしている。

あとはDjangoによるWeb開発をしているのでテンプレートエンジン用のプラグインを入れていたりします。

さいごに

こんだけ書いたけど、ぶっちゃけ最近はVSCodeで開発していることも多い。

NERDTreeとか使って左のカラムにファイルツリー出してみたりもしたんだけど。。

結局マウスでぽちぽち、右クリックでフォーマット、自動でLintかけてくれて自動で補完もよしなにしてくれる、使いたかったらすぐにターミナルも開けるなど、至れり尽くせりなんで。

自分にとってVimを使う理由ってのはもはやVimのキーバインドが使えることくらいかなぁと思い始めていたりします。

*1:そんなに困っていないので放置している。