Sublime Text 无一键提取多行功能,需用正则锚定(^.pattern.$)配合多光标操作;Find All 后必须按 Ctrl+L/Cmd+L 才能选中整行;跨文件提取须用 Ctrl+Shift+F 并正确设置路径与正则模式。

Sublime Text 本身没有“一键提取多行指定内容”的功能,所有高效提取都依赖正则锚定 + 多光标操作的组合。关键不是找按钮,而是控制匹配范围——漏掉 ^ 或 $,就只能选中关键词本身,不是整行。
用 ^.*pattern.*$ 确保整行匹配
这是最常卡住的地方:很多人输完 error 就点 Find All,结果只高亮那 5 个字母。Sublime 默认不扩展匹配到行边界。
-
^表示行首,$表示行尾,二者必须显式写出,缺一不可 - 想匹配含邮箱的行,得写:
^.*\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b.*$,不能只写邮箱正则 - 关键词含正则元字符(如
.、*、[)必须转义:file\.log,否则会被当语法解析 - 大小写敏感默认开启;想忽略,点查找框左侧的
Aa按钮
按 Ctrl+L(Windows/Linux)或 Cmd+L(macOS)选中整行
仅靠 Find All 不会自动选中整行——它只把光标放在每行匹配起始位置。真正选中整行要靠后续扩展操作。
- 输入正则并点
Find All后,立刻按Ctrl+L(别停顿,也别先点别的地方) - 此时所有匹配行会被完整选中,包括行首空格和换行符
- 如果文件超大(>10MB),
Ctrl+L可能响应慢甚至无反应;此时应切回Find in Files方案 - 选中后复制粘贴,容易带入空行;粘贴前建议先执行
Ctrl+Shift+P→ 输入Remove Empty Lines
跨文件批量提取用 Ctrl+Shift+F(Find in Files)
单文件里再快,也解决不了“从整个日志目录抓所有 404 行”的需求。这时必须用 Find in Files,它才是真正的批量入口。
- 快捷键:
Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS) - 务必勾选右下角
.*(即Regular Expression),否则^.*404.*$会被当普通字符串搜 -
Where栏一定要填路径,比如./logs/**/*.log;留空=只搜当前文件,不是全项目 - 搜索结果页里,按
Ctrl+A全选 →Ctrl+C复制,内容带前缀(如app.js:123:...) - 要纯文本?粘贴后用
Ctrl+H替换掉^.*?:\d+:(注意启用正则)
复杂条件过滤建议用 Filter Lines 插件
当需求变成“保留含 api/ 但不含 /test 的行”,正向写正则极易出错。这时候插件比硬刚正则更可靠。
- 安装:按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Filter Lines - 使用:选中关键词 →
Ctrl+K Ctrl+R(Win/Linux)或Cmd+K Cmd+R(macOS)→ 选Include lines matching regex - 它支持反向过滤:
Exclude lines matching regex直接删掉干扰行 - 注意:插件不修改原文件,所有结果都在新视图里,安全可逆
真正容易被忽略的点是作用域控制——Find All 只在当前文件生效,Find in Files 的 Where 路径写错就等于白忙;还有编码和换行符一致性问题,如果文件混用 CRLF 和 LF,^ 和 $ 在某些场景下会失效。动手前先统一成 UTF-8 + LF,省掉一半排查时间。


















