Sublime Text多行替换本质是正则捕获加光标精准落位:必须启用正则模式(.*变蓝)、跨行需加(?s)前缀、换行符查找用\n或\R、替换框输真实换行需Ctrl+Shift+Enter,否则\n仅作字面字符。

Sublime Text 查找替换多行文本,本质不是“选中多行再替换”,而是靠正则捕获 + 光标精准落位——不启用 (?s)、不写对锚点、不验证高亮,90% 的跨行替换都会漏或错。
为什么 Ctrl+H 直接输换行符没用
默认正则模式下,. 不匹配换行符,\n 在查找框里只是两个普通字符,不是换行。你输入 foo\nbar,Sublime 会字面搜索 f-o-o-\-n-b-a-r,根本找不到真实换行。
- 必须先点查找面板右下角的
.*按钮启用正则模式(变蓝才算) - 跨行匹配要加前缀
(?s),例如(?s)start.*?end - 想匹配实际换行符,用
\n或\r\n(Windows 文件),但更稳的是用(?s)+. -
Replace All对折叠代码块、注释区、只读行默认跳过,得先点Find All看底部面板是否列出了所有目标
怎么安全地替换 “...” 块
这种结构天然跨行,硬拖选或 Ctrl+D 都不可控。唯一可靠路径是正则捕获内容,再把光标落到可编辑区域。
- 打开
Ctrl+H,勾选.*,查找框输入:(?s)<!--\s*开始\s*-->(.*?)<!--\s*结束\s*--> - 点
Find All:确认高亮只包住你要改的中间部分(.*?捕获组),不碰前后注释 - 按
Ctrl+Alt+Enter,所有$1区域变成独立光标 - 此时输入新内容,或按
Ctrl+Shift+→扩展选中整个捕获内容再删改 - 替换框里只能用
$1,不能写\1或${1}
Ctrl+Shift+L 多行光标为什么总不对齐
这个快捷键不管缩进、不管空行、不自动对齐——它只认选区里有没有 \n,光标默认落在每行末尾换行符前。
- 鼠标拖选时若末尾没盖住换行符(停在行尾字符上),
Ctrl+Shift+L只生成一个光标 - 安全做法:先
Ctrl+L选第一行 →Shift+↓多选几行(确保选区含\n)→ 再Ctrl+Shift+L - 空行也会出光标,但停在行首;缩进不一致的行,光标卡在不同列,输内容会错位
- 想统一加前缀,得先按
Home或运行命令面板里的Align Indent
替换完内容没保存?不是 Bug 是设计
Replace All 只把变更缓存在内存,文件标签页出现星号 * 就是还没落盘。关掉窗口或崩溃,全丢。
- 必须手动执行
File → Save All,或快捷键Ctrl+K然后Ctrl+B(Windows/Linux) - macOS 是
Cmd+K→Cmd+B - 大文件(>10MB)可能被跳过;非 UTF-8 编码(如 GBK)文件默认不参与替换,得先右键转码
- 如果某次替换后部分文件没变,先检查右下角是否显示
RO(只读),或是否被Where路径过滤掉了
最常被忽略的其实是上下文控制:Sublime 不懂代码语义,id="123" 和 "id": "123" 在它眼里只是字符串。想不出错,就得用正则把引号、冒号、括号都写进模式里,而不是依赖“看起来像”。


















