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的性能,同时保证悬停功能的正常运行?
1条答案
按热度按时间pcrecxhr1#
目前,我的解决方案是使用virtualenv中的flake8检查syntastic,并使用内置的Jedi完成。请注意,在virtualenv中必须提供Python linter,这意味着pacman全局安装的包是无效的。
我对句法的看法是:
字符串
而且,我发现Syntastic在关闭分割缓冲区时会报告错误。我通过添加一个
silent
来分叉并修复了这个bug,它可以通过型