Vim中ALE配置后为何仍将pyright linter标记为忽略
ALE 中 pyright 同时出现在启用与忽略列表的原因及排查方案
核心触发原因
出现该现象通常是以下几类规则触发了 ALE 的 linter 忽略逻辑,和官方开箱即用的预期冲突:
- 优先级更高的忽略配置生效
你开启的g:ale_linters_explicit = 1仅会关闭默认启用的 linter 列表,并不会绕过忽略规则或是运行条件校验逻辑。而 ALE 的g:ale_linters_ignore变量优先级高于你手动配置的g:ale_linters显式启用规则,只要该变量下 python 对应的忽略列表包含 pyright,哪怕你显式指定启用,它也会被标记为忽略。 - linter 依赖的可执行文件无法被 ALE 检测到
ALE 会先把你指定启用的 linter 放入启用列表,再校验运行条件;如果校验不通过(比如找不到pyright-langserver可执行文件、版本不符合要求),就会把该 linter 移入忽略列表,因此出现同时出现在两个列表的情况。 - 第三方插件或后续配置覆盖了原有规则
如果你安装了其他集成 ALE 配置的插件、或是 vimrc 中后写的配置覆盖了前面的启用规则,也会触发该问题。
排查及解决步骤
- 首先查看当前实际加载的忽略配置:在 vim 中执行
:echo g:ale_linters_ignore,如果输出的 python 对应列表中包含 pyright,删除对应忽略配置,或是从该列表中移除 pyright。 - 校验 ALE 环境下是否能找到 pyright 可执行文件:执行
:echo exepath('pyright-langserver'),如果输出为空,说明 vim 的运行环境未包含 pyright 的安装路径,需要将对应路径追加到 vim 的$PATH变量中。 - 校验 pyright 版本是否符合要求:直接执行
pyright-langserver --version,如果版本过低,升级到最新版本即可。 - 如果以上配置都没问题,可以临时注释所有其他第三方插件,仅保留 ALE 本身测试配置是否生效,若生效则逐个启用插件定位冲突来源。
内容的提问来源于stack exchange,提问作者Farzad
相关产品推荐
相关产品推荐

