navicat 不支持输入时自动大写sql关键字,仅通过ctrl+f7美化或自动补全时按“大写关键字”设置生效;该选项不影响手动输入内容,本质是格式化策略而非实时修正器。
navicat 默认不自动大写关键字,因为没这个功能
navicat 的查询编辑器本身不提供“输入时实时将 select、from、where 等关键字转为大写”的行为。它只在「美化 sql」(ctrl+f7)或「自动补全插入」时,按当前设置决定大小写——而这个设置是静态的,不是输入触发的动态转换。
也就是说:你手动敲 select * from users,它就保持小写;只有执行格式化操作后,才会按规则批量改写。
“关键字大写”开关只影响美化和补全,不监听键盘输入
在 工具 → 选项 → 查询编辑器 中,“大写关键字”复选框的作用范围很明确:
- ✅ 控制
美化SQL(Ctrl+F7)输出时是否把关键字转成大写 - ✅ 影响自动补全弹出的建议项(如输入
sel后按Tab,补全为SELECT还是select) - ❌ 不改变你已手输内容的大小写
- ❌ 不在你敲完
select后自动把它变成SELECT
这个开关本质是“格式化策略”,不是“实时输入修正器”。很多用户误以为勾上它就能“所见即所得”地获得大写效果,结果发现手打的还是小写——这是预期行为,不是 bug。
想让新写的 SQL 关键字自动大写?只能靠外部辅助
Navicat 原生不支持输入时自动转换,但你可以用这些方式逼近目标:
- 启用
工具 → 选项 → 查询编辑器 → 大写关键字,再配合高频使用Ctrl+F7快捷键——写完一段就格式化一次,形成肌肉记忆 - 用 AutoHotkey(Windows)或 Keyboard Maestro(macOS)写热键脚本:比如输入
sel+Space时自动替换为SELECT(注意结尾空格),但需自行维护关键词列表 - 切换到支持 snippet + 实时转换的编辑器(如 VS Code + SQLTools 插件),把 Navicat 当作执行终端,而非主编辑器
注意:Ctrl+F7 格式化对嵌套子查询、复杂 CASE 表达式有时会错位缩进,别无脑全选格式化;建议分段选中后操作。
为什么不能像 IDE 那样智能识别并转换?
根本原因在于 Navicat 编辑器定位是「轻量数据库交互界面」,不是「SQL 开发 IDE」。它没有内置语法解析器来实时判断光标位置前的 token 类型,也不监听字符级输入事件做响应式重写。所有格式化逻辑都集中在 Ctrl+F7 触发的单次解析流程里,走的是简单正则匹配 + 预设规则,而非 AST 分析。
这意味着:哪怕你装了最新版 Navicat Premium 17,只要官方没重写编辑器底层,这个限制就不会消失。别在设置里反复翻找“实时大写”选项了——它真的不存在。











