跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Sublime Text怎么批量替换换行符_Sublime Text使用正则处理文本【案例】

Sublime中搜索 无反应是因为未启用正则模式,需点击.图标激活;推荐用R跨平台匹配换行,删空行应搜^s$R,多行替换须捕获缩进并预览。 为什么直接搜
没反应 不是
写错了,是正则模式根本没开。Sublime 默认把
当普通字符处理,哪怕你写了
{2,}
也搜不到任何换行——因为
.*
按钮没点,引擎压根不解析转义序列。 必须先按
Ctrl+H
(Windows/Linux)或
Cmd+H
(macOS),再手动点击右下角的
.*
图标(变蓝才算生效)。否则所有
、
、
^
、
$
全部失效。 确认方式:输入
d+
点“查找”,能高亮数字就说明正则已激活 常见误操作:以为按了
Ctrl+H
就自动进正则,结果搜
时连一个换行都不匹配 Windows 文件用
,但直接写
容易漏掉单个
;更稳写法是用
R
(Sublime 内置通用换行符)
R
和
到底该用哪个
R
是 Sublime 特有的跨平台换行符匹配,等价于
| |
,不用管文件是 Windows、macOS 还是 Linux 换行格式。而
只匹配 LF,在 Windows 文件里会漏掉
中的
,导致替换不完整。 例如想把所有换行替换成空格合并成一行: ✅ 推荐:
R
→
(一个空格) ❌ 风险:
→
,在 Windows 文件中只处理了 LF,
会残留成乱码 ⚠️ 注意:
R
不支持放在字符类里,比如
[R]
是非法语法 怎么删空行又不破坏末尾换行 直接搜
^s*$
并替换为空,看似干净,实则常把文件末尾的换行符也干掉,导致 Git 提示 “no newline at end of file”。更糟的是,如果开了
. matches newline
,
^
和
$
会失效,整条规则崩盘。 仿Sublime和notepad++编辑器效果 仿Sublime和notepad++编辑器效果 下载 ✅ 正确做法:关闭
. matches newline
(即不勾选 ↩ 图标),搜
^s*$R
,替换为空 ✅ 补一刀清理末尾多余换行:搜
R$
,替换为空(确保文件以单个换行结尾) ❌ 错误示范:
^s*$
+ 勾选 ↩ → 匹配失控,可能吞掉代码行首的空格甚至整段逻辑 跨行内容替换时缩进错乱怎么办 比如要把
function foo() { console.log(1); }
替成
const foo = () => { console.log(1); };
,直接用
function (w+)() {
替换,新文本会丢失原始缩进,所有代码被顶到行首。 关键不是正则写得不够狠,而是没把缩进本身捕获进来: ✅ 捕获缩进:
^(\s*)function (\w+)\(\) \{
(注意
\s*
前的
^
和括号) ✅ 替换保留:
$1const $2 = () => {
⚠️ 注意:
^
和
$
默认只匹配全文首尾,必须加
(?m)
或勾选 ↩ 才能按行生效;但这里用
^
是为了捕获每行开头的空白,所以勾选 ↩ 是必要的 ? 复杂结构别硬刚:含嵌套
{}
或换行注释时,
[sS]*?
比
.*?
更可靠,且必须加
?
防贪婪越界 最常被忽略的一点:替换前不点
Find All
预览,就敢按
Replace All
。尤其涉及
R
或多行捕获时,一个没注意的
?
缺失,可能让整个文件的换行和缩进全乱套,而且很难靠 Ctrl+Z 撤回——因为 Sublime 在大文件中会分块执行替换,撤销栈可能只记录部分操作。

相关文章