intellisense没反应主因是语言服务器未启用,需先确认右下角语言模式正确(非plain text)、文件后缀匹配、扩展已启用且无冲突,并检查developer tools中是否有failed to start language server报错。

为什么 IntelliSense 没反应?检查语言服务是否启用
VSCode 的代码补全核心依赖语言服务器(LSP),不是装了插件就自动生效。比如写 Python 时,python 扩展必须已安装且处于激活状态;写 TypeScript 时,TypeScript 内置服务需识别当前文件为 .ts 或 .tsx。常见现象是敲字母没提示——先确认右下角状态栏显示的语言模式(如 “Python”),再按 Ctrl+Shift+P 输入 Developer: Toggle Developer Tools 查看 Console 是否有 Failed to start language server 报错。
- 确保文件后缀名正确(
.js不会触发 Python 补全) - 打开文件夹而非单个文件,否则部分扩展无法加载工作区级配置
- 禁用所有插件后逐个启用,排查冲突(尤其“代码美化”类插件常劫持
Enter键行为)
怎么让 tab 键真正“补全”而不是只选中?
默认情况下,IntelliSense 的 Tab 是“选择下一项”,不是“插入当前项”。要改成插入式补全,需修改设置:
- 打开设置(
Ctrl+,),搜索editor.tabCompletion - 设为
on(而非默认的off) - 同时检查
editor.acceptSuggestionOnCommitCharacter是否为true(允许在输入.、(等字符后自动确认)
注意:此设置对 JavaScript/TypeScript 生效明显,但对 Python 的 jedi 后端可能需额外开启 python.autoComplete.addBrackets。
triggerCharacters 不生效?自定义补全触发时机
某些场景需要在非默认字符(如 $、@)后触发补全,比如写 Vue 模板或 Shell 脚本。这时不能只靠默认设置,得手动配置语言特定规则:
- 在
settings.json中添加语言专属块,例如:
"[vue]": {
"editor.quickSuggestions": { "other": true, "strings": true },
"editor.suggest.triggerCharacters": [".", "$", "@"]
}
注意:triggerCharacters 是数组,必须写成字符串形式;且仅对已启用对应语言支持的文件类型有效——如果 .vue 文件被识别为 HTML,补全就不会触发。
为什么自定义 snippet 补全不出现?路径和 scope 必须匹配
用户创建的代码片段(snippet)要生效,两个条件缺一不可:文件语言匹配 + 触发前缀存在。比如你为 JavaScript 写了 log 片段,但在 .ts 文件里敲 log 却没提示,大概率是 snippet 的 "scope" 写成了 "javascript" 而非 "javascript,typescript"。
- snippet 文件应放在
User/snippets/下,命名如javascript.json或my-react.json -
prefix值区分大小写,Log和log是两个不同触发词 - 若想全局生效,
scope字段留空或设为"*"(但 VSCode 89+ 版本限制了通配符行为,推荐显式列出)
补全逻辑其实很朴素:敲字 → 匹配 prefix → 核对 scope → 显示 snippet。任何一环断开,它就安静如鸡。











