Sublime原生auto_complete仅支持当前文件单词前缀匹配,不解析语法、import或类型;要实现函数签名、参数提示等智能补全,必须配置LSP插件及对应语言服务器,并正确设置command、scopes、syntaxes和auto_complete_commit_on_tab等关键项。

Sublime 原生的 auto_complete 只做单词级前缀匹配,不解析语法、不读 import、不推导类型——你没写过 requests.get,它就永远不会提示 get;右下角显示 Plain Text,所有补全逻辑直接静默失效。真要获得函数签名、参数占位符、悬停文档这类能力,必须走 LSP + 本地语言服务器这条路,没有替代方案。
为什么按 Ctrl+Space 没反应或只弹出乱码?
常见错误现象:手动唤出补全框后内容为空、全是拼错的变量名、或只显示当前文件里写过的词(比如你打过 prnit,它就优先推荐这个)。
- 右下角语法标识不是
Python/JavaScript/CSS,而是Plain Text→ 补全引擎压根没加载,先按Ctrl+Shift+P→Set Syntax: Python确认语法 -
"auto_complete": true没开 → 打开Preferences → Settings (User),确保该字段为true - 没装语言服务器,只装了
LSP插件 →LSP是空壳,必须配对运行中的服务器(如pylsp或pyright) - Windows 用户常漏掉 PATH 配置 →
pip install python-lsp-server[all]后,检查pylsp.exe是否在PythonScripts目录下,并把该路径加进系统环境变量
LSP 客户端配置最容易填错的三项
打开 Preferences → Package Settings → LSP → Settings,右侧用户设置中填 clients 时,以下三个字段错一个,LSP 就静默不工作,状态栏不会显示 LSP-pylsp active:
-
"command":必须是可执行命令名或绝对路径,例如 Windows 上得写["C:\Python311\Scripts\pylsp.exe"](注意双反斜杠),不能只写["pylsp"](除非确认已在 PATH 中) -
"scopes":必须与实际作用域一致,Python 文件是["source.python"],不是["text.python"]或["python"];验证方式:光标放代码区 →Ctrl+Shift+P→Developer: Show Scope Name -
"syntaxes":必须指向 Sublime 自带的语法定义路径,Python 是["Packages/Python/Python.sublime-syntax"],拼错成Python.tmLanguage或漏掉Packages/前缀都会导致不激活
Tab 键不确认补全项?这不是插件问题,是默认关闭
很多人装完 LSP 发现补全框出来了,但按 Tab 只插入制表符,根本选不了建议项——这是 Sublime 默认行为,和任何插件无关。
- 必须在
Preferences → Settings (User)中显式启用:"auto_complete_commit_on_tab": true - 搭配
"auto_complete_with_fields": true才能支持补全片段里的${1}占位符跳转 - 若仍无效,临时禁用
All Autocomplete或AutoFileName—— 这两个插件会劫持Tab行为 - 想输入
.后立刻触发补全(比如os.),加这行:"auto_complete_triggers": [{"selector": "source", "characters": "."}]
真正卡住人的地方往往不在“装什么”,而在“是否被识别”:LSP 配置字段大小写敏感、路径拼写零容忍、scope 名称必须一字不差。哪怕 syntaxes 多了个空格,服务器连上了也白搭——状态栏不亮,补全就不来。

















