Sublime代码自动补全失效?试试这些插件强化补全技巧!
- 内容介绍
- 文章标签
- 相关推荐
本文共计982个文字,预计阅读时间需要4分钟。
Sublime Text 的自动补全功能不够智能,基本不是坏了,而是因为没有配置LSP(语言服务器协议)——没有连接上语言服务器、auto_complete相关设置、关于右下角语法提示是Plain Text或Tab,基本没有设置确认键。修复起来不难,但需要一步步查实。
为什么 Ctrl+Space 按了没反应?先盯住这三处
补全弹窗都不出来,90% 卡在基础配置上:
- 右下角语法标识必须是
Python、CSS、JavaScript等具体类型,不是Plain Text;可按Ctrl+Shift+P→Developer: Show Scope Name确认真实 scope 是source.python还是text.plain -
"auto_complete": true必须显式写在Preferences → Settings (User)里;默认设置里的true不生效,你没写,它就当关着 - LSP 插件装了但没启用对应服务器:按
Ctrl+Shift+P→LSP: Enable Language Server Globally,选pylsp或typescript-language-server;成功后状态栏左下角应显示LSP-pylsp active
LSP 连上了,但 os. 后不弹菜单?补全触发逻辑要手动开
LSP 默认不监听 . 或 ( 这类语义字符,得靠 auto_complete_triggers 告诉它什么时候该动:
- 在
Preferences → Settings (User)中添加:"auto_complete_triggers": [{"selector": "source.python", "characters": "."}] - 对 CSS,加另一条:
{"selector": "source.css", "characters": ":"},这样display:后立刻出值列表 - 别漏掉
"auto_complete_commit_on_tab": true,否则按Tab只插制表符,不选候选项;这个和"tab_completion": true无关,后者只管普通文本补全
Tab 键死活不确认补全?不是插件问题,是 Sublime 默认行为
很多人敲完 print( 弹出菜单,猛按 Tab 却没反应——这不是 LSP 没加载,是 Sublime 把 Tab 定义为「下一个候选」,不是「确认上屏」:
- 必须在用户设置里加:
"auto_complete_commit_on_tab": true - 顺手加上:
"auto_complete_with_fields": true,否则像print(${1:x})这类带占位符的补全,Tab跳不到参数位 - 禁用其他劫持
Tab的插件:如AutoFileName、SublimeJEDI,它们会覆盖 LSP 补全源,导致菜单里只有文件路径没有函数参数
All Autocomplete 和 LSP 能一起用吗?能,但别混期待
All Autocomplete 和 LSP 完全不冲突,但干的事完全不同:
-
All Autocomplete只聚合所有已打开文件里的单词(比如你三个 tab 里都写过API_BASE_URL,它就出现在补全框顶部);它不解析import requests,也不懂requests.get有哪些参数 -
LSP才提供函数签名、悬停文档、跨文件跳转;补全框里两者内容并列显示,All Autocomplete给高频自定义词,LSP给精准语义项 - 性能注意:打开 50+ 文件时,
All Autocomplete会变慢;可在它的设置里加:"max_files_to_scan": 20
最常被忽略的点:补全是否生效,取决于当前文件的 syntax scope 是否匹配配置中的 selector,而不是你装了多少插件。一个 .py 文件如果被识别成 Plain Text,哪怕 LSP 和 pylsp 都跑着,它也完全静默——scope 错了,整个链路就断了。
本文共计982个文字,预计阅读时间需要4分钟。
Sublime Text 的自动补全功能不够智能,基本不是坏了,而是因为没有配置LSP(语言服务器协议)——没有连接上语言服务器、auto_complete相关设置、关于右下角语法提示是Plain Text或Tab,基本没有设置确认键。修复起来不难,但需要一步步查实。
为什么 Ctrl+Space 按了没反应?先盯住这三处
补全弹窗都不出来,90% 卡在基础配置上:
- 右下角语法标识必须是
Python、CSS、JavaScript等具体类型,不是Plain Text;可按Ctrl+Shift+P→Developer: Show Scope Name确认真实 scope 是source.python还是text.plain -
"auto_complete": true必须显式写在Preferences → Settings (User)里;默认设置里的true不生效,你没写,它就当关着 - LSP 插件装了但没启用对应服务器:按
Ctrl+Shift+P→LSP: Enable Language Server Globally,选pylsp或typescript-language-server;成功后状态栏左下角应显示LSP-pylsp active
LSP 连上了,但 os. 后不弹菜单?补全触发逻辑要手动开
LSP 默认不监听 . 或 ( 这类语义字符,得靠 auto_complete_triggers 告诉它什么时候该动:
- 在
Preferences → Settings (User)中添加:"auto_complete_triggers": [{"selector": "source.python", "characters": "."}] - 对 CSS,加另一条:
{"selector": "source.css", "characters": ":"},这样display:后立刻出值列表 - 别漏掉
"auto_complete_commit_on_tab": true,否则按Tab只插制表符,不选候选项;这个和"tab_completion": true无关,后者只管普通文本补全
Tab 键死活不确认补全?不是插件问题,是 Sublime 默认行为
很多人敲完 print( 弹出菜单,猛按 Tab 却没反应——这不是 LSP 没加载,是 Sublime 把 Tab 定义为「下一个候选」,不是「确认上屏」:
- 必须在用户设置里加:
"auto_complete_commit_on_tab": true - 顺手加上:
"auto_complete_with_fields": true,否则像print(${1:x})这类带占位符的补全,Tab跳不到参数位 - 禁用其他劫持
Tab的插件:如AutoFileName、SublimeJEDI,它们会覆盖 LSP 补全源,导致菜单里只有文件路径没有函数参数
All Autocomplete 和 LSP 能一起用吗?能,但别混期待
All Autocomplete 和 LSP 完全不冲突,但干的事完全不同:
-
All Autocomplete只聚合所有已打开文件里的单词(比如你三个 tab 里都写过API_BASE_URL,它就出现在补全框顶部);它不解析import requests,也不懂requests.get有哪些参数 -
LSP才提供函数签名、悬停文档、跨文件跳转;补全框里两者内容并列显示,All Autocomplete给高频自定义词,LSP给精准语义项 - 性能注意:打开 50+ 文件时,
All Autocomplete会变慢;可在它的设置里加:"max_files_to_scan": 20
最常被忽略的点:补全是否生效,取决于当前文件的 syntax scope 是否匹配配置中的 selector,而不是你装了多少插件。一个 .py 文件如果被识别成 Plain Text,哪怕 LSP 和 pylsp 都跑着,它也完全静默——scope 错了,整个链路就断了。

