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

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

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

...
let g:ycm_language_server += [
            \   {
            \       'name': 'pyright',
            \       'filetypes': [ 'python' ],
            \       'cmdline': [ 'node', substitute(system('which pyright-langserver'), '\n', '', ''), '--stdio' ],
            \   },
            \ ]
...

字符串
global_extra_conf.py

def Settings(**kwargs):
    return {
        "ls": {
            "python": {
                "analysis": {
                    "useLibraryCodeForTypes": True,
                    "typeCheckingMode": "basic",  # ["off", "basic", "strict"]
                    "logLevel": "Infomation",
                },
                "pythonPath": "/home/jizhou/venv/bin/python",
            }
        }
    }


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

def Settings(**kwargs):
    return {
        "ls": {
            "diagnostic": {"enable": True},
            "hover": {"enable": True},
            "workspace": {
                "environmentPath": "~/venv/bin/python"
            },
        }
    }


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

我的问题是

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

pcrecxhr

pcrecxhr1#

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

...
let g:syntastic_check_on_open = 0   " avoid slow on start up
let g:syntastic_python_checkers = ['flake8']
let g:syntastic_python_flake8_exec = "$HOME/venv/bin/flake8"
let g:syntastic_python_flake8_args = "--max-line-length=132"

let g:syntastic_cursor_column = 0 " disable to speed up navigation significantly
...

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

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

相关问题