Sublime中匹配换行符需显式用\n或\r\n,或用[\s\S]*绕过.不跨行限制;跨行搜索须正确设置Where路径并启用正则;替换后需手动保存。
怎么在 Sublime 里真正匹配换行符
Sublime 的正则引擎(PCRE)默认不把
当作能匹配换行符的通配符,也不支持
修饰符——所以写
永远跨不了行,这是最常卡住人的地方。
必须显式写出换行:用
表示 LF(Unix/macOS),
表示 Windows 换行;实际文件中是什么,就得写什么
想匹配“从 start 到 end 之间任意内容(含换行)”,得写成
或
——
是绕过
不跨行的通用解法
别用
/
做跨行锚定:它们只对单行生效;多行场景下,
匹配的是每行开头,不是整个文本开头
如果文件是 UTF-16 或带 BOM,正则可能意外失效;建议先用
统一编码
全局替换多行内容时,“Where”路径和正则要同步设对
用
(macOS 是
)打开全局搜索后,光写正则没用,范围设错照样找不到——尤其当目标跨行内容分散在不同子目录或文件类型中时。
在
框中填
才能递归搜 Python 文件;只写
会忽略子文件夹
若只想处理 Markdown 中的代码块,
填
,查找框启用正则后输入
,再用
提取内容
勾选
(Alt+R)必须和
路径同时生效;漏点一个,面板就退化成纯文本搜索
大项目慎用空
:它会扫所有已索引文件(包括
),极易卡死;先限定
或
替换后为什么改了却没保存?
Sublime 的“Replace All”只修改内存中的文件副本,不会自动触发保存——这是用户误以为“替换失败”的头号原因,尤其在批量处理十几个文件时。
仿Sublime和notepad++编辑器效果
仿Sublime和notepad++编辑器效果
下载
替换完成后,标签页右上角出现
星号,代表该文件已修改但未保存
必须手动执行
,或按快捷键
后接
(Windows/Linux);macOS 是
→
如果某文件被外部程序(如 Git、IDE)锁定,Sublime 无法保存,也不会报错,只会静默跳过——检查文件权限或关掉其他编辑器再试
建议替换前先用
预览结果,确认无误再点
;否则回退只能靠
(仅限当前文件)或 Git 恢复
复杂跨行正则导致界面冻结怎么办
像
、
这类嵌套量词或贪婪回溯模式,在大文件(>5MB)或匹配项密集时,会让 Sublime 卡顿数秒甚至无响应。
优先用更具体的字符类代替
:比如匹配 HTML 标签间文本,用
比
快得多
超大日志文件先预筛:用
先搜关键词(如
)定位相关文件,再对这些文件单独开正则替换
避免在未启用
时搜短词:比如搜
可能匹配到
、
,引发大量无效回溯
真需要强正则能力又常处理大文本?考虑导出匹配块到 VS Code 或专用工具(如 ripgrep + sed),Sublime 不是万能的
事情说清了就结束。关键不是“能不能”,而是“在哪设”“怎么写”“改完存没存”——三处漏一点,整个流程就断在半路。
./sstart.*end\n\r\nstart[\s\S]*?endstart(.*\n)*?.*end[\s\S].^$^File → Reopen with Encoding → UTF-8Ctrl+Shift+FCmd+Shift+FWheresrc/**/*.pysrc/Where*.md```[a-z]*\n([\s\S]*?)\n```$1Use Regular ExpressionsWhereWherenode_modulesapp/***.js,*.ts*File → Save AllCtrl+KCtrl+BCmd+KCmd+BFind AllReplace AllCtrl+Z(a+)+.*?foo.*?bar.*?([^<]+)
(.*?)
Ctrl+Shift+FERRORWhole Wordidvideohidden