Sublime Text 的多重选择依赖字符位置而非语义理解,需用正则匹配+列偏移精确定位光标,如通过 Move to Column 命令配合捕获组 $1 全选字段名,再以正则替换生成 SQL CREATE TABLE 语句。

Sublime Text 的多重选择本身不理解“表结构”,所谓“快速映射”其实是把字段名、类型、注释等文本块,按列或按行位置批量对齐、补全或转成目标格式(比如 SQL CREATE TABLE 或 JSON Schema)。关键不是靠编辑器猜语义,而是用正则 + 多光标控制光标落点。
怎么让光标精准落在每行的“类型”字段起始位置?
肉眼对齐不可靠,尤其当原始文本含中文、全角空格或缩进不一致时。必须用命令精确定位:
- 先把光标移到第一行“类型”列的首个字符上(比如
INT的I),按Ctrl+Shift+P调出命令面板,输入Move to Column,回车后输入该列的**字符偏移数**(例如第 28 列) - 再按
Ctrl+Shift+M(Find All),前提是先用正则匹配到所有“类型”字段——比如^\s*\w+\s+(\w+),确保捕获组$1正确抓取类型名 - 如果某行没匹配上,
Ctrl+Shift+M不会生成光标,导致错位;务必先点Find看右下角匹配数是否等于行数
为什么 Ctrl+D 选不到所有字段名?
Ctrl+D 是逐个往后找**完全相同的字符串**,不是按列逻辑识别“这是字段名”。常见失效场景:
- 字段名带下划线但拼写不统一:比如
user_id和user_name不会被同时选中 - 光标停在空格或冒号后(如
name:的冒号后),Ctrl+D就找不到下一个单词 - 有折叠代码块或隐藏字符(如
\u200b),它会卡住不再继续匹配 - 想选所有“字段名”,正确做法是先用正则
^(\w+)\s+.*$匹配行首单词,Ctrl+Shift+M全选捕获组$1,再Ctrl+→移到词尾,按Shift+←反向选中整个字段名
如何把原始表格转成 SQL CREATE TABLE 字段声明?
别手动一行行敲,用正则 + 多光标组合操作:
- 假设原始是制表符分隔的三列:
id\tINT\t主键ID,先用查找替换把\t替成(空格),再统一用正则^(\w+)\s+(\w+)\s+(.+)$匹配三组 - 替换为:
$1 $2 COMMENT '$3',——注意末尾逗号,方便后续补ENGINE=InnoDB - 替换完后,把光标放在所有行末逗号后:
Ctrl+Shift+M选中全部逗号,按→移到下一位,输入换行符和缩进,再粘贴最后一行的PRIMARY KEY (id) - 如果某行类型是
VARCHAR(255),而你只想补括号里的数字,得先用正则(VARCHAR)\((\d+)\)单独匹配并替换,不能依赖多光标盲目输
最常被忽略的是:Sublime 对“列”的理解仅限于字符索引,不感知字体渲染宽度。一旦混用中文和英文,Alt+拖拽 列选必然错位;此时必须切到等宽字体(如 Source Code Pro),且确认设置里 "drag_text": false。映射的本质是位置控制,不是语义推断——你得告诉它“第几列”,而不是指望它看懂“这是一列类型”。


















