VSCode中ShellCheck插件无反应的根本原因是文件语言模式未识别为shellscript,需手动设置右下角语言为Shell Script或在settings.json中配置"files.associations": {"*.sh": "shellscript"},并确保本地已安装且PATH可达shellcheck命令。

VSCode里ShellCheck插件为什么没反应
常见现象是打开.sh文件后毫无波浪线、悬停无提示,甚至右下角语言标识显示Plain Text。根本原因不是插件装错了,而是它根本没被触发——ShellCheck插件只对语言模式为shellscript的文件生效。
- 手动点击编辑器右下角语言标识,选
Shell Script(不是Bash或Shell) - 在
settings.json中加这条映射:"files.associations": { "*.sh": "shellscript" } - 确认本地已安装
shellcheck命令:终端运行shellcheck --version必须有输出,否则插件会静默失败 - Mac用户用Homebrew装完后,若VSCode是通过Dock启动的,可能读不到
PATH,需从终端执行code .打开项目
Python项目该用Ruff还是Flake8做静态检查
Ruff在VSCode里已能完全替代Flake8,不只是“更快”,而是规则代码级兼容——F401、E501、SIM102这些错误码原样可用,# noqa注释也不用改。Flake8还在Python 3.12+上偶发崩溃,而Ruff用Rust写,稳定且支持增量扫描。
- 卸载
flake8,装ruff:pip install ruff - VSCode中禁用
python.linting.flake8Enabled,启用python.linting.ruffEnabled -
ruff.toml里可直接复用原有.flake8的ignore和select配置,比如select = ["F", "E", "W", "B"] - 注意:Ruff默认不检查
__init__.py,如需覆盖,加extend-exclude = []
JavaScript项目如何让ESLint和Prettier不打架
冲突根源在于两者都试图管“格式”:ESLint的semi、quotes规则和Prettier的semi、singleQuote参数一旦不一致,保存时就会反复修正、报错、再修正。解决方案不是关掉一个,而是让ESLint彻底交出格式控制权。
- 在
.eslintrc.cjs中启用plugin:prettier/recommended,它会自动关闭所有与Prettier重叠的规则 - 删掉ESLint配置里所有格式类规则,比如
"semi": ["error", "always"]、"quotes": ["error", "single"] - 确保
settings.json里只设"editor.defaultFormatter": "esbenp.prettier-vscode",不要同时开editor.formatOnSave和source.fixAll.eslint - 验证方式:故意写
let a = 1;(带分号),保存后应自动变成let a = 1(无分号),且ESLint不报semi错误
团队共享配置最易被忽略的三个点
配置文件进了Git,不代表新人一打开就能用。很多团队卡在“开箱即用”这一步,问题往往藏在路径、加载顺序和隐式依赖里。
-
.vscode/settings.json必须放在项目根目录,且不能被.gitignore排除;里面避免写绝对路径,比如"python.defaultInterpreterPath"要留空或用./venv/bin/python这种相对路径 -
.editorconfig是跨语言基础层,但VSCode需装EditorConfig插件才读取;若团队混用PyCharm或Vim,这个文件比.vscode目录更可靠 - 多根工作区(
.code-workspace)下,每个子文件夹的.eslintrc.cjs可能被忽略,建议统一提一层到工作区根目录,或在.code-workspace里显式配置"eslint.workingDirectories"


















