sublime无原生“一键导出筛选行”功能,所有提取本质是“选中→复制→粘贴”;跨文件提取用ctrl+shift+f(需勾regular expression并指定where范围);单文件整行匹配用^.keyword.$正则配合ctrl+l或alt+enter;filter lines插件支持“保留匹配行”式过滤;remove duplicate lines仅删相邻重复行,非全局去重;操作前须统一换行符与编码。

Sublime 本身不提供“一键导出筛选行到新文件”的原生功能,所有看似“提取”的操作,本质都是“选中 → 复制 → 粘贴”,关键在怎么选得准、不丢格式、不带冗余。
用 Ctrl+Shift+F 批量跨文件提取含关键词的行
这是真正适合日志、配置集、项目级扫描的方案,结果带路径和行号,可直接当索引用。
- 按
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS),填入关键词,务必勾选Regular Expression(哪怕你不用正则——否则.、[这类字符会失效) -
Where框必须手动指定范围:留空 = 只搜当前文件;填./src或*.log才是真跨文件 - 结果页右键 →
Copy All,粘贴后需手动删掉每行开头的filename:line_num:前缀 - 如果关键词含
.、*、[等元字符,又不想写正则,就别勾Regular Expression;但一旦勾了,file.txt得写成file\.txt - 大项目慎用全目录扫描:Sublime 不建索引,纯靠实时读文件,1000+ 个文件可能卡住数秒
用 ^.*keyword.*$ 在当前文件里整行高亮匹配项
适合单文件精细处理,比如从 SQL 导出结果里抽字段、从 API 响应里捞 JSON 片段。
- 按
Ctrl+F,输入^.*keyword.*$,点右下角.*按钮启用正则,再点Find All - 此时只选中关键词本身;按
Ctrl+L(Windows/Linux)或Cmd+L(macOS)把每个匹配点扩展为整行 - 或者更稳:按
Alt+Enter(Windows/Linux)或Cmd+Enter(macOS),直接高亮所有完整匹配行 - 大小写敏感默认开启,想忽略就点查找框左侧的
Aa按钮 - 复制前建议先执行
Ctrl+Shift+P→ 输入Copy Selected Lines,它比右键复制更可靠,不会漏换行或混入空格
用 Filter Lines 插件实现“保留匹配行”式过滤
这不是查找,是真正的删减:执行后,文件只剩你要的行,其他全消失——注意它不自动保存,但会改当前缓冲区。
- 该功能由第三方插件
Filter Lines提供,没装就搜不到命令;先装插件:Ctrl+Shift+P→Package Control: Install Package→ 搜Filter Lines - 装好后,
Ctrl+F输入关键词 →Ctrl+Shift+L转多光标 →Ctrl+Shift+P→ 输入Keep Only Lines Matching回车 - 必须先有匹配光标,否则命令静默失败(不会报错,也不会弹提示)
- 它只对当前文件生效,且依赖你已正确触发多光标:确认光标是多个闪烁竖线,不是单个块状选择
- 原始顺序完全保留,不排序、不去重,就是硬过滤——这点比正则
^(.*$)\n(?=.*^\1$)更直白
为什么 Remove Duplicate Lines 总是不按你想的去重
这个原生命令名字极具误导性:它根本不是“全局去重”,而是“只删相邻重复行”,和 Excel 的“删除重复项”逻辑完全不同。
- 三行内容为
apple→banana→apple,第二个apple不会被删,因为中间隔了banana -
apple和apple(末尾多空格)被视作不同行;\r\n和\n混用也会导致判异 - 想保序全局去重?老实用正则
^(.*$)\n(?=.*^\1$),或切到终端跑awk '!seen[$0]++' - 超过 5 万行或含嵌套结构(如 CSV 内换行、JSON 多行值),Sublime 正则引擎容易假死,这时别硬刚
最易被忽略的一点:所有“提取”操作都依赖你提前统一了换行符和编码。文件里 \r\n 和 \n 混用,^ 和 $ 就可能错位;GBK 编码文件里搜 UTF-8 关键词,必然匹配失败——这些底层状态不调好,上层操作再熟练也是白忙。











