ctrl+shift+l只生成一个光标是因为它仅依据选区中实际存在的换行符\n切片,若未覆盖行尾换行符(如鼠标拖选停在字符上而非下一行开头),即视为单行处理;安全做法是先用ctrl+l逐行选中再执行。

Ctrl+Shift+L 为什么只生成一个光标或光标歪斜
它根本不管“你是不是想改多行”,只认当前选区里有没有换行符 \n。鼠标拖选时看似选中了 5 行,但若末尾没盖住最后一行的换行符(即停在行尾字符上),Sublime 就当单行处理,Ctrl+Shift+L 只放一个光标。
安全做法:Ctrl+L 选中第一行 → 按住 Shift+↓ 多选几行(确保选区含 \n)→ 再按 Ctrl+Shift+L。此时所有光标默认落在各自行尾;想加前缀,得先按 Home 或运行命令面板里的 Align Indent。
- 空行也会被拆出光标,但光标停在开头,容易漏改——处理配置文件时务必手动检查
- 如果某几行缩进不一致(比如有的开头有空格、有的没有),光标不会自动对齐,需先用正则清理格式或改用列选择
Ctrl+D 逐个扩展匹配时总漏选或多选
Ctrl+D 不是全局搜词,它只从当前光标所在词出发,严格匹配**完全一致的字符串**,且默认区分大小写、不识别单词边界。双击 user_id 后按 Ctrl+D,下一处 user_id_list 也会被框中——因为前缀完全一致。
想只改完整变量名,不是所有含该子串的地方:
– 先确保双击选中的是完整词(不含空格、点、引号)
– 按 Ctrl+Alt+R 开启大小写敏感(避免 USER_ID 被误卷入)
– 遇到注释或字符串里的干扰项,立刻按 Ctrl+K 再按 Ctrl+D 跳过当前项
怎么用正则精准定位再批量编辑(比如改所有 id="xxx" 中的 xxx)
靠 Ctrl+D 或 Alt+F3 硬扫,大概率把 "id": "123" 或 // id=456 也一起改了。真正可控的方式是:先用正则圈出目标位置,再把光标精准落在捕获内容上。
操作流程:
– Ctrl+H 打开替换面板,勾选右下角 .*(Regex 模式必须点亮)
– 查找框输入:id="([a-zA-Z0-9_-]+)",点 Find All 看预览是否只高亮引号内部分
– 按 Ctrl+Alt+Enter,所有 $1 捕获区域(即引号内的值)都会变成独立光标
– 此时输入新值,或按 Ctrl+Shift+→ 扩展选中整个捕获内容再删改
- 正则中
.默认不吃换行符,跨行匹配必须加(?s)前缀 - 替换框只认
$1,不支持\1或${1} - 括号
(和)在查找框里是元字符,要匹配字面括号得写成\(和\)
批量替换后内容没保存?别信“Replace All”就完事
点完 Replace All,文件标签页出现星号 * 是正常现象——Sublime 把变更缓存在内存里,并未落盘。关掉窗口或崩溃就全丢。
必须手动执行:File → Save All,或快捷键 Ctrl+K 然后 Ctrl+B(Windows/Linux);macOS 是 Cmd+K → Cmd+B。
- 大文件(>10MB)可能被跳过,右下角状态栏看编码是否为
UTF-8,非 UTF-8 编码文件默认不参与替换 - 如果某次替换后发现部分文件没变,先检查它们是否是只读(右下角显示
RO),或者是否被Where路径过滤掉了(比如写了**.ts却想改.js)











