ctrl+shift+e(win/linux)或cmd+shift+e(macos)执行当前sql语句块,需光标位于以分号结尾的完整语句内,自动识别分号边界,非全文或单行;未连接时显示“no active connection”,不报错;语言模式须设为sql,补全依赖已建立连接及有效上下文。

Ctrl+Shift+E 执行当前语句,不是全文也不是光标所在行
VSCode 里执行 SQL 不是直觉型的 Ctrl+Enter,而是 Ctrl+Shift+E(Windows/Linux)或 Cmd+Shift+E(macOS)。这个快捷键的行为取决于「语句边界」,不是按一下就跑全文,也不是只跑光标那一行。
- 它会从光标位置往前找最近的分号
;或开头,往后找下一个分号或文件末尾,执行中间这段——所以多条语句必须用分号显式分隔 - 如果光标在注释里、字符串中、或
WHERE后面空白处,可能识别失败,返回Invalid SQL statement - 没连上数据库时,快捷键仍能触发,但结果面板只显示
No active connection,不会报红错,容易误以为“执行了但没输出”
Alt+Shift+F 格式化前,先确认 language mode 和 formatter 配置
Alt+Shift+F 在 SQL 文件里无效,大概率是因为右下角显示的是 Plain Text,不是 SQL。这不是插件问题,是 VSCode 默认行为:新建 .sql 文件不自动设语言模式。
- 点击右下角语言标识 → 输入
sql→ 选SQL或具体方言(如PostgreSQL) - 确保已配置
editor.defaultFormatter,例如:{"editor.defaultFormatter":"cdsama.sql-formatter"}(ID 以你安装的插件为准) - 全局设置里打开
editor.formatOnSave,否则每次都要手动按Alt+Shift+F - 如果格式化后关键字全大写、缩进错乱,说明 formatter 默认配置不匹配你的团队规范,需查该 formatter 的配置项,比如
sqlFormatter.keywordCase和sqlFormatter.indentStyle
Ctrl+Space 补全表名/列名,只在有效上下文生效
补全不是装完插件就自动工作,它依赖两个硬性条件:连接已建立 + 光标位置可推导语义。常见失效场景不是插件坏了,而是上下文断了。
- 必须在已成功连接的数据库下打开
Query Editor(不是普通.sql文件),补全才加载元数据 -
SELECT * FROM users WHERE后按Ctrl+Space不出列名;但SELECT users.后按,就能列出users表所有字段 - 首次连接后需等 3–5 秒,状态栏 SQL 图标旁出现加载转圈,此时补全才可用;刚点 Connect 就狂按空格,只会返回空列表
- 如果补全始终不弹,检查
files.associations是否设了{"*.sql": "sql"},否则新文件又变回Plain Text
多光标和代码片段提升手写效率,但别依赖它们绕过连接验证
VSCode 原生的 Alt+鼠标点击 多光标、sel/ins 等代码片段确实加快书写,但它们和数据库连接无关,也补不了真实表结构。
- 片段只是文本替换,比如输入
sel+Tab展开为SELECT * FROM,后面还得手动敲表名——没连库时,补全不会介入 - 多光标适合批量改字段名,但改完之后执行前,务必确认当前连接是否指向目标库,否则可能在测试库删了生产数据
- 真正省时间的不是写得快,而是执行前能预判:连的是哪个库、当前用户权限够不够、语句是否带
LIMIT防全表扫
最常被忽略的不是快捷键本身,而是快捷键背后依赖的状态:语言模式、活动连接、语句边界、元数据加载完成度。四个条件缺一,Ctrl+Shift+E 就只是个响声。











