vim 有没有什么方法可以让ycm(Youcompleteme)对python的诊断在vi中更方便呢

sdnqo3pr  于 2023-08-05  发布在  Python
关注(0)|答案(1)|浏览(134)

Jedi内置的Ycm不支持诊断。我尝试了一些方法,如YCM的LSP和Syntastics,但使用其他插件时出现各种问题。
对于ycm,lsp和pyright,除了hover,它工作得很好。当我切换语义完成并选择单词时,一个文档字符串显示在弹出窗口中,没有问题。仅悬停(<plug>(YCMHover))vimrc

  1. ...
  2. let g:ycm_language_server += [
  3. \ {
  4. \ 'name': 'pyright',
  5. \ 'filetypes': [ 'python' ],
  6. \ 'cmdline': [ 'node', substitute(system('which pyright-langserver'), '\n', '', ''), '--stdio' ],
  7. \ },
  8. \ ]
  9. ...

字符串
global_extra_conf.py

  1. def Settings(**kwargs):
  2. return {
  3. "ls": {
  4. "python": {
  5. "analysis": {
  6. "useLibraryCodeForTypes": True,
  7. "typeCheckingMode": "basic", # ["off", "basic", "strict"]
  8. "logLevel": "Infomation",
  9. },
  10. "pythonPath": "/home/jizhou/venv/bin/python",
  11. }
  12. }
  13. }


对于ycm lsp和jedi-language-server,hover也不起作用。但它不能解决virtualenv。global_extra_conf.py

  1. def Settings(**kwargs):
  2. return {
  3. "ls": {
  4. "diagnostic": {"enable": True},
  5. "hover": {"enable": True},
  6. "workspace": {
  7. "environmentPath": "~/venv/bin/python"
  8. },
  9. }
  10. }


对于使用pylint的syntastics,syntastics插件运行良好,但通常会出现性能和功能问题。无法检查插入模式是否存在。如果打开检查打开,它会减慢vim的启动速度。

我的问题是

有没有什么办法能让ycm不仅完成虚拟环境的模块,而且能像lsp一样快速检查错误,而不降低vim的性能,同时保证悬停功能的正常运行?

pcrecxhr

pcrecxhr1#

目前,我的解决方案是使用virtualenv中的flake8检查syntastic,并使用内置的Jedi完成。请注意,在virtualenv中必须提供Python linter,这意味着pacman全局安装的包是无效的
我对句法的看法是:

  1. ...
  2. let g:syntastic_check_on_open = 0 " avoid slow on start up
  3. let g:syntastic_python_checkers = ['flake8']
  4. let g:syntastic_python_flake8_exec = "$HOME/venv/bin/flake8"
  5. let g:syntastic_python_flake8_args = "--max-line-length=132"
  6. let g:syntastic_cursor_column = 0 " disable to speed up navigation significantly
  7. ...

字符串
而且,我发现Syntastic在关闭分割缓冲区时会报告错误。我通过添加一个silent来分叉并修复了这个bug,它可以通过

  1. Plug 'ieeyaY/syntastic', {'branch': 'ieeyaFix'}

展开查看全部

相关问题