Help us understand the problem. What is going on with this article?

vim-lsp の pyls が重いのをなんとかする

vim-lsp と pyls

Vim の Python 入力補完を jedi-vim から vim-lsp に乗り換えてみたが、動作が重い。
しかも Python ファイルを編集し始めてしばらくすると、編集しているファイルとは全然関係のない、OneDrive に置いてある.py ファイルの自動ダウンロードが頻発する。

プロセスをみると pyls.exe のサブプロセスで pylint がCPU全開でメモリをバカ喰いして走っていた。
こいつがいろんな場所の .py ファイルを触りまくるらしい。何してくれているの・・・。

どうやら pyls のプラグインの pylint が自動起動して意図しない動作をしているようだ。
こういうのがデフォルトになっているのは何だかなぁ。(自分の設定・環境のせいかな?)

プラグインはenabled(enable じゃなくて enabled) を設定すれば無効化できるようなので、補完用の jedi だけ残して停止させることにした。
これでなんとか使えそうだ。

.vimrc
if executable('pyls')
    call lsp#register_server({
        \ 'name': 'pyls',
        \ 'cmd': { server_info -> ['pyls'] },
        \ 'whitelist': ['python'],
        \ 'workspace_config': {'pyls': {'plugins': {
        \     'mccabe'              : { 'enabled': v:false },
        \     'preload'             : { 'enabled': v:false },
        \     'pycodestyle'         : { 'enabled': v:false },
        \     'pydocstyle'          : { 'enabled': v:false },
        \     'pyflakes'            : { 'enabled': v:false },
        \     'pylint'              : { 'enabled': v:false },
        \     'rope_completion'     : { 'enabled': v:false },
        \     'yapf'                : { 'enabled': v:false },
        \
        \     'jedi' : {'extra_paths' : [] },
        \     'jedi_completion'     : { 'enabled': v:true, 'include_params': v:true },
        \     'jedi_definition'     : { 'enabled': v:true, 'follow_imports': v:true, 'follow_builtin_imports': v:true },
        \     'jedi_hover'          : { 'enabled': v:true },
        \     'jedi_references'     : { 'enabled': v:true },
        \     'jedi_signature_help' : { 'enabled': v:true },
        \     'jedi_symbols'        : { 'enabled': v:true },
        \ }}},
        \ })
    autocmd FileType python setlocal omnifunc=lsp#complete
endif

余談だけど、vim-lsp も補完は jedi なんだね。

CutBaum
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away