Ctrl+Click适用于位置对齐的字段别名修改,如统一改AS后缀,可避免误匹配;Ctrl+Shift+L适合无嵌套逗号的逗号分隔字段转竖排加前缀,但需预处理空格和保护函数括号。

千万行级别的 SQL 迁移脚本,靠手动改列名、表名或条件逻辑几乎不可能;但 Sublime Text 的多行编辑不是万能加速器——它只在结构高度一致时才真正高效,否则反而引入批量错误。
什么时候该用 Ctrl+Click(Windows/Linux)或 Cmd+Click(macOS)而不是正则替换
当你需要修改散落在不同行、但位置对齐的字段别名或 AS 后缀时,Ctrl+Click 比正则更安全。比如所有 SELECT 行中第 3 列都是 user_id AS uid,你想统一改成 user_id AS user_id_new:
- 把光标依次点在每个
uid上(按住Ctrl或Cmd),再输入新内容,其他选中位置同步变更 - 避免误匹配其他地方的
uid(比如 WHERE 条件里的uid = 123) - 不适用于字段位置不固定的情况(如有的行有注释、有的换行缩进不一致)
Ctrl+Shift+L 拆行后多光标编辑的适用边界
把一长串逗号分隔的字段(如 col_a, col_b, col_c)转成竖排后批量加前缀,Ctrl+Shift+L 是快捷方式,但要注意:
- 必须确保原始字符串中没有嵌套逗号(比如
CONCAT('a,b', 'c')里的逗号会误拆) - 拆完后每行末尾可能残留空格或制表符,建议先执行
Ctrl+Shift+P→Trim Trailing White Space - 如果字段含函数或括号,建议先用正则
(\w+\([^)]*\))提前标记保护,再拆行
正则替换里 \K 和 (? 的取舍
想只替换 FROM table_x 中的 table_x,而不动 FROM 关键字本身,两种写法效果不同:
查找:FROM\s+\K\w+ 替换:new_table_name
比
查找:(? <p>更可靠,因为:</p>
-
\K在 Sublime Text 中兼容性更好(尤其老版本),(? 在跨行或含 \t 时容易失效 - 当
FROM后跟多个空格或换行时,\s+能匹配,而(? 的 lookbehind 长度不能动态变化,部分版本会报错invalid look-behind pattern - 替换前务必用
Find All预览命中行数,避免漏改或过改
大文件卡顿或崩溃时的临时规避方案
Sublime Text 打开超 50MB 的 SQL 文件时,多行编辑响应变慢甚至无响应,这不是配置问题,是内存映射限制:
- 关闭所有插件(尤其是
GitGutter、BracketHighlighter),用Preferences → Package Control → Disable Package - 把文件按
CREATE TABLE或INSERT INTO拆成多个子文件(可用csplit -f part_ '/^CREATE TABLE/' {file}) - 禁用语法高亮:
View → Syntax → Plain Text,能显著提升光标移动和多选性能
千万行脚本的重构,真正耗时的从来不是操作本身,而是验证每处改动是否破坏了字段语义、类型推导或下游依赖;多行编辑只是把“改得快”变成可能,但“改得对”还得靠结构化校验和小批量回滚能力。











