如何让Vim中YCM支持虚拟环境补全、LSP诊断及正常Hover功能?
问题与需求
现有问题
YouCompleteMe(YCM)内置的Jedi不支持诊断功能,尝试过几种方案均存在问题:
1. YCM + LSP + Pyright
除<plug>(YCMHover)的Hover功能失效外,其余功能正常,语义补全选词时可正常弹出文档字符串。相关配置如下:
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", } } }
2. YCM + LSP + jedi-language-server
Hover功能同样失效,且无法解决虚拟环境识别问题。相关配置如下:
global_extra_conf.py 配置:
def Settings(**kwargs): return { "ls": { "diagnostic": {"enable": True}, "hover": {"enable": True}, "workspace": { "environmentPath": "~/venv/bin/python" }, } }
3. Syntastics + Pylint
功能可用,但存在明显短板:无法在插入模式下实时检查,开启文件打开时的检查会拖慢Vim启动速度。
核心需求
能否实现YCM同时具备以下能力:
- 支持虚拟环境下的模块补全
- 具备LSP级别的快速错误检查能力
- 不影响Vim运行性能
- Hover功能正常工作
内容的提问来源于stack exchange,提问作者ieeya
相关产品推荐
相关产品推荐

