Sublime 的“过滤文本”本质是匹配加筛选组合,必须用 ^.pattern.$ 锚定整行、安装 Filter Lines 插件、执行 Keep Only Lines Matching 命令,并正确设置 Where 范围才能真正提取目标行。

Sublime 本身没有“过滤文本”的独立功能,所有所谓“过滤”本质都是「匹配 + 筛选动作」的组合——不写对 ^.*pattern.*$,就只能高亮关键词,不是整行;不按 Ctrl+Shift+L 或装 Filter Lines,就删不掉无关行。
为什么 ^.*pattern.*$ 必须带 ^ 和 $?
很多人输完 error 就点 Find All,结果只选中那 5 个字母。Sublime 默认匹配子串,不是整行。^ 锚定行首,$ 锚定行尾,二者缺一不可,否则无法支撑后续“保留/删除整行”的操作。
- 想提取含邮箱的行,得写
^.*\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b.*$,不能只写邮箱正则 - 关键词含
.、*、[等元字符必须转义,比如搜file.log要写成file\.log - 大小写敏感默认开启;若要忽略,点查找框左侧的
Aa按钮
怎么真正“保留匹配行”而不是只高亮?
Ctrl+Shift+L(Win/Linux)或 Cmd+Shift+L(macOS)是关键一步:它把所有匹配位置转为多光标,但此时还没删行。必须接着调用命令面板执行 Keep Only Lines Matching 才能真正过滤。
- 这个命令不在菜单里,必须按
Ctrl+Shift+P输入后回车 - 它依赖
Filter Lines插件,没装就搜不到——先按Ctrl+Shift+P→Package Control: Install Package→ 搜Filter Lines - 如果执行后没反应,大概率是
Ctrl+Shift+L没成功触发多光标:确认每行都有闪烁竖线,而不是只有一个光标
跨文件批量提取时,Where 栏填什么才有效?
按 Ctrl+Shift+F 后,Where 栏留空 = 只搜当前文件,不是全项目。这是最常被忽略的配置项。
- 搜整个日志目录:填
./logs/**/*.log(支持 glob 通配) - 搜当前打开的文件夹:点
Where右侧文件夹图标,选Browse... - 结果页复制后带前缀(如
app.js:123: error occurred),要纯文本就粘贴后用Ctrl+H替换^.*?:\d+:(启用正则) - 大文件多时,
Where范围越小越好,否则扫描卡顿明显
真正难的不是写正则,而是控制作用域:从单行锚定到多文件路径,从光标选择到插件命令链,漏掉任意一环,pattern 写得再准也白搭。

















