Vim中w0rp/ale插件搭配tslint失效,求排查方案
从ALE+ESLint切换到TSLint后的故障排查指南
我之前从ESLint切换到TSLint配合ALE时也踩过一模一样的坑,给你整理几个必查的操作点,一步步来应该能解决问题:
确保ALE已启用TSLint作为TypeScript的检查器
ALE不会自动默认启用TSLint,你需要在Vim配置文件(~/.vimrc或init.vim)里明确指定TypeScript的检查器为TSLint:let g:ale_linters = { \ 'typescript': ['tslint'], \}配置完后可以在Vim里输入
:ALEInfo查看当前文件的检查器列表,确认TypeScript部分有tslint项,没有的话就是没成功启用。验证TSLint的安装与环境兼容性
首先确认TSLint和你的TypeScript版本匹配(不同TSLint版本对TS版本有明确要求),然后检查TSLint的可执行路径:- 如果是项目本地安装的TSLint(在
node_modules/.bin下),确保ALE能自动识别,可通过设置强制使用本地版本:let g:ale_typescript_tslint_use_global = 0 - 如果是全局安装的,要保证它在Vim的环境变量
PATH中,或者手动指定路径:let g:ale_typescript_tslint_executable = '/usr/local/bin/tslint'
另外可以在项目根目录手动执行TSLint命令测试是否能正常工作:
npx tslint --project tsconfig.json ./path/to/your-ts-file.ts命令行能输出检查结果的话,说明TSLint本身没问题。
- 如果是项目本地安装的TSLint(在
检查tslint.json的有效性
配置文件的语法错误或无效规则会直接导致TSLint停止工作,比如逗号漏写、规则名称拼写错误等。用上面的命令行测试时,如果TSLint报错配置文件问题,就先修复tslint.json的问题。排查ALE的全局配置冲突
检查有没有不小心禁用了TSLint或者ALE本身:- 输入
:echo g:ale_enabled,返回1才是正常启用状态; - 检查是否有
g:ale_disable_linters配置把TSLint加进去了,如果有就移除; - 确认当前文件的类型被正确识别,输入
:set filetype?,应该显示typescript或typescriptreact(React项目)。
- 输入
更新ALE到最新版本
旧版本的ALE可能存在TSLint适配的bug,用你的插件管理器(比如vim-plug、Vundle)更新ALE到最新版,重启Vim后再测试。
内容的提问来源于stack exchange,提问作者mathiajusth
相关产品推荐
相关产品推荐

