ctrl+shift+l后正则替换不生效,因该操作仅拆分光标而不限制查找范围;必须勾选“in selection”、启用正则、再alt+enter选中匹配项,才能实现精准多光标编辑。

Ctrl+Shift+L 之后正则替换为啥不生效?
因为 Ctrl+Shift+L 只是把当前选区按行切开、在每行末尾放一个光标,它**不会自动限制查找范围**。你接下来用 Ctrl+H 做正则替换时,Sublime 默认仍在全文档里跑——光标位置完全被忽略。
真正生效的前提是:先让 Sublime 知道“只在这几个光标所在的上下文里找”。必须手动勾选查找面板右下角的 In Selection(小勾),再启用正则(Alt+R),输入模式后按 Alt+Enter 才会把匹配结果转成新光标。
- 没勾
In Selection→ 正则在全文跑,改错地方 - 忘了按
Alt+Enter→ 只高亮,没生成光标,输内容只作用于第一个位置 - 文件含 GBK 中文但没转 UTF-8 → 正则可能截断汉字,匹配失败或偏移
怎么让光标精准落在某字段内部(比如 JSON 的 value)?
靠纯视觉定位(比如 Alt+拖拽列选)在非等宽结构里极易错位。中文、全角符号、混合缩进会让 Sublime 按字符数计算,光标横向漂移。可靠路径是:用正则先捕获目标字段,再拆解光标。
例如想批量修改 JSON 中 "name": "xxx" 里的 xxx:
- 查:
"name"\s*:\s*"([^"]*)"(注意转义双引号) - 勾
In Selection+Alt+R启用正则 - 按
Alt+Enter选中所有匹配项 → 此时光标在"name": "后面 - 再按
Ctrl+Shift+L,每个匹配项被拆成独立光标 - 按
Ctrl+→两次跳过引号,光标就稳稳停在 value 起始处
如果某行没匹配上,Alt+Enter 不会给它加光标,后续所有光标索引会整体偏移——务必先点 Find All 确认命中的行数是否一致。
为什么改着改着只剩一个光标了?
这不是崩溃,是 Sublime 的设计逻辑:**任何文本变更(输入、删除、方向键)都会触发光标收敛**。它假设你开始编辑了,就自动合并重叠或相邻光标,只留一个活跃状态。
- 想删所有匹配词?别先按
Ctrl+X,直接按Delete或Backspace - 想输新内容?
Ctrl+Shift+L后立刻敲字,不要先按Home或End - 已失焦怎么办?
Ctrl+U可撤销最近一次光标合并,但仅限一次;更稳的是重新搜一遍再Ctrl+Shift+L
尤其注意:软换行(word_wrap: true)开启时,同一逻辑列可能被折成多行,Ctrl+Click 容易点偏——临时关掉 View → Word Wrap 更准。
^ 和 $ 正则比多光标更稳的两种场景
当你要操作几十行以上,或带条件(如跳过空行、避开已有注释),^ 和 $ 的位置匹配比手动调光标更可靠,且不依赖光标是否对齐。
- 加行首注释:
Ctrl+H→ 查找栏填^,替换栏填//(注意空格) - 只给非空行加:
^(?=\S);跳过已有//的行:^(?!//) - 误填
^.*会吞掉整行内容——纯位置匹配才是安全做法
复杂点在于:正则写错一个字符(比如漏转义 .),整个匹配就失效;而多光标一旦错位,改完才发现批量污染。两者不是替代关系,而是分工——正则定位置,多光标做精细编辑。











