Sublime不支持一键提取多行特定字符,本质是正则定位+列选择+手动复制组合;需依目标特征选路径:结构化内容用捕获组(Find面板启用正则)、对齐文本用Alt列选、跨文件用Find in Files加二次处理。

Sublime 本身不支持“一键提取多行中特定字符”这种语义级操作,所有所谓“提取”,本质都是「正则定位 + 列选择 + 手动复制」三步组合。关键不在功能有多强,而在你选对了路径——用错方法(比如硬套Replace in Files或依赖$1跨文件引用),结果就是空跑、漏字符、列错位。
用正则捕获组提取单文件中的目标字符
这是最可控的方式,适用于变量名、URL、ID 等结构清晰的片段。前提是你要能写出精准匹配目标部分的括号捕获组。
- 必须在当前文件的
Find面板(Ctrl+H)中启用正则(点右下角.*图标),Replace in Files(Ctrl+Shift+H)不支持$1引用,填了也当字面量输出 - 写法示例:要提取
id: "abc123"中的abc123,搜索id:\s*["']([^"']*)["'],替换为$1;注意.*是贪婪的,[^"']*才能防跨引号 - 如果目标字符位置固定(如每行第 8–12 列),别用捕获组,改用
^.{7}(.{5}),但得确认空格和\t都算 1 个字符,且\t必须显式写,不能靠. - 测试时先
Find All,看高亮是否只框住你要的字符;若连带前后空格或冒号一起被选中,说明边界没卡准,加\b或\s限定更稳妥
用列选择(Alt+拖拽)提取对齐文本中的竖列字符
适合日志时间戳、CSV 字段、缩进一致的配置项等视觉上“纵向对齐”的内容。它不依赖正则,但极度依赖物理列对齐——混用 Tab 和空格、BOM、编码不统一都会导致静默偏移。
- 按住
Alt(Windows/Linux)或Option(macOS),鼠标从起始列垂直向下拖出灰色矩形,松手即完成列选;斜拖或中途松键会退化为普通选择 - 列选完不是终点——必须立刻按
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS)把矩形拆成每行一个光标,否则输入只作用于首行 - 空行会中断列连续性:光标自动落到下一行开头,而非原列;建议提前删空行,或列选后手动
Ctrl+→调整光标列位 - 若拖不准(高分屏/触控板),放弃鼠标,改用键盘:先
Ctrl+L全选所有行 →Ctrl+Shift+L拆光标 →Ctrl+→移动到目标列 →Ctrl+Shift+↓向下扩展列选区
跨文件提取?别信“一键导出”,老实用 Find in Files + 手动清理
Find in Files(Ctrl+Shift+F)是唯一能批量扫项目的入口,但它输出的是带路径和行号的杂乱文本,不是纯字符列表。想拿到干净字符,得走两遍处理。
- 搜索时务必勾选
Regular Expression,Where 填具体路径(如./src/**/*.js),留空=只搜当前文件——这是最常踩的坑 - 结果页右键 →
Copy All,粘贴到新文件后,内容形如main.js:42:id: "user_99";先用Ctrl+H查找^[^:]+:\d+:(含行号前缀),替换为空,得到纯行内容 - 此时再对纯行内容做第二轮正则提取:比如用
id:\s*["']([^"']*)["']→$1,就能批量拿到所有 ID 值 - 若原始行中目标字符不唯一(如一行有两个
id),Find All会高亮全部,但Replace只改第一个;这时得用Ctrl+D手动逐个选中再替换,别指望自动全替
真正难的不是怎么操作,而是每次动手前确认三件事:目标字符是否真的对齐(列选前提)、是否真的可正则描述(捕获组前提)、是否真的需要跨文件(Find in Files 前提)。漏掉任一前提,后面所有快捷键都只是徒劳。











