mypyとjedi-vimで補完を強くする - Vim
Pythonで型アノテーションを使いたくなって、どうせならVimでも補完できるようにしたいと思って、やってみた
Python3が有効になっているか確認
まずはVimでPython3が有効になっているか確認する
もし有効になっていない場合、ここを参考にして、有効にする
$ pip3 install -U flake8 mypy-lang jedi
neomakeを入れる
非同期で型、スタイルチェックを行うにはneomakeを使う
neomake/neomake: Asynchronous linting and make framework for Neovim/Vim
call dein#add('neomake/neomake') ... let g:neomake_python_enabled_makers = ['python', 'flake8', 'mypy'] autocmd FileType python setlocal omnifunc=jedi#completions if !exists('g:neocomplete#force_omni_input_patterns') let g:neocomplete#force_omni_input_patterns = {} endif let g:neocomplete#force_omni_input_patterns.python = '\%([^. \t]\.\|^\s*@\|^\s*from\s.\+import \|^\s*from \|^\s*import \)\w*'
syntasticを入れる
なんとなくsyntasticも入れた
vim-syntastic/syntastic: Syntax checking hacks for vim
call dein#add('scrooloose/syntastic') ... let g:syntastic_check_on_open = 1 let g:syntastic_python_checkers = ['flake8', 'pep257', 'mypy'] let g:syntastic_python_flake8_args = '--max-line-length=120'
入れるときにエラーとかのメモ
以下の記述を書かないとエラーになった
if !exists('g:neocomplete#force_omni_input_patterns') let g:neocomplete#force_omni_input_patterns = {} endif
こんなエラー
E121: Undefined variable: g:neocomplete#force_omni_input_patterns
あと、無効にしていたから、動作しなくて焦った
let g:jedi#completions_enabled = 0
jedi#completetions_enabled
は、jedi-vimの補完を有効にするかどうかってことらしい。deoplete-jediを使うときにはこれを無効(0)にするらしい