sublime text 中搜索特殊字符必须启用正则模式(点亮 . 按钮),否则 \n、.、() 等会被当作字面字符或报错;正确写法如 console.log()、^\s$\n 删除空行、"([^"])"→'$1' 转引号、func((.?))→func{$1} 加花括号。

Sublime Text 里搜特殊字符,比如换行符、制表符、括号、点号,不启用正则就等于白搜——\n 会被当两个普通字符,. 会匹配任意字符,( ) 直接报错。必须开 .* 开关,且写法要对。
Ctrl+H 打开替换面板后,.* 按钮没点亮?那所有 \n \t 都无效
很多人输完 \n 点 Replace All,结果把文本里的「\」和「n」挨个替换了。根本原因是右下角的 .* 图标没点蓝——它默认关闭,不手动激活,Sublime 就按字面意思匹配。
- Windows/Linux:按
Ctrl+H→ 确认右下角.*已高亮(或按Alt+R切换) - macOS:按
Cmd+H→ 同样要点亮.*,不能只靠记忆快捷键 - 想匹配字面的
.、+、?、(、),必须写成\.、\+、\?、\(、\) -
console.log()要搜到真实调用,得写console\.log\(\),否则.匹配任意字符,()被当分组语法
搜换行符、空行、缩进,\n \s ^ $ 必须一起用
单独输 \n 只能匹配一个换行;想删空行、合并段落、提取缩进行,得靠锚点 + 字符类组合。Sublime 的 \s 默认包含 \n、\r、\t、空格等,但 ^ 和 $ 是关键——它们让匹配从“某个字符”变成“某整行”。
- 删所有空行(含只有空格/Tab 的行):
^\s*$\n→ 替换为空。注意末尾的\n是要删掉的换行本身,不是匹配的一部分 - 把连续多个换行统一压成两个:
\n{2,}→ 替换为\n\n - 提取以四个空格开头的代码行:
^ .*(四个空格 +.*),别用^ {4}.*,Sublime 不支持{4}这种量词写法 - 跨行匹配?
.默认不匹配\n,要用[\s\S]或开启(?s)模式:(?s)start.*end
搜中文之间空格、函数参数、带引号字符串,捕获组 () 和引用 $1 得配对写
想批量改 "abc" 为 'abc',或把 func(a, b) 拆成 func({a, b}),光靠查找不行,必须用捕获组提取内容再重排。括号在正则里是元字符,写错位置就全乱。
- 双引号转单引号:
"([^"]*)"→ 替换为'$1'。注意"要字面匹配,所以两边不转义,中间用[^"]*表示非引号字符 - 函数参数加花括号:
func\((.*?)\)→ 替换为func{$1}。左边\(和右边\)是字面括号,中间(.*?)才是捕获组 - 中文词间空格(避免误伤英文单词):
[\u4e00-\u9fa5]\s+[\u4e00-\u9fa5]→ 替换为$1$2不行,因为没分组;得写([\u4e00-\u9fa5])\s+([\u4e00-\u9fa5])→$1$2 - 错误示范:
func(.*?)想捕获参数,但外层没括号,$1永远为空
全局搜特殊字符时,Where 填错路径前缀,结果全是空的
Ctrl+Shift+F 全局搜 \n 或 \t,结果面板空着?大概率是 Where 框填了无效路径,或者根本没进项目模式。Sublime 的全局搜索不识别 shell glob(如 **/*.js),也不接受绝对路径写法,只认相对前缀。
- 确认左下角状态栏显示类似
~/my-project/的路径,没有就说明只是开了文件,不是项目 -
Where填src/:搜所有路径以src/开头的文件(src/api/index.ts✅,tests/src/❌) -
Where填*.py:只搜 Python 文件,但不会递归子目录;想搜src/**/*.py?Sublime 不支持,得填src/再手动过滤 - 排除
node_modules:-node_modules/ -dist/,斜杠必须是/,Windows 下也一样 - 搜
.log文件却没结果?检查file_exclude_patterns设置是否含"*.log",或右下角编码是否为UTF-8
真正卡住人的地方,从来不是记不住 \n 表示换行,而是忘了点 .*、写反了括号转义顺序、或在 Where 框里硬塞了 glob 语法——这些细节一错,整个正则就失效,还没任何报错提示。











