必须勾选Ctrl+H中的“In Selection”才能限定替换范围,否则Replace All会作用于整个文件;多光标操作需先手动框选目标区域,配合Ctrl+Shift+L或正则\b边界控制确保精准修改。

Ctrl+H 里勾选 “In Selection” 才真限定范围
默认 Ctrl+H 的 Replace All 会扫整个文件,哪怕你事先用鼠标框选了一段——它根本不管。必须手动勾选面板左下角的 In Selection 复选框,替换才只发生在你当前高亮的区域内。
常见错误现象:选中一段日志文本,按 Ctrl+H 输入 ERROR → DEBUG,点 Replace All 后发现全文所有 ERROR 都被改了。原因就是没点 In Selection。
- 勾选后,面板右下角会显示 “In Selection” 状态,且 Find All 按钮只高亮所选区域内的匹配项
- 如果选区跨行但包含空行,空行也会参与匹配(光标会落在空行开头),需提前删掉或过滤
- 正则模式(
.*按钮)和In Selection可共存,但^和$仍以整段选区为上下文,不是每行独立计算
多光标编辑前先缩小选区,避免误触其他行
想只改某几行里的特定词,别直接 Ctrl+D 全文档扫——那样光标会跳到注释、字符串甚至别的函数里。正确做法是先把目标行手动框出来,再在该范围内启动多光标。
使用场景:修改一个配置块里的所有 timeout,但不想碰下面另一个同名配置段。
- 用鼠标或 Shift+↑/↓ 选中目标配置块(确保选区含换行符,否则 Ctrl+Shift+L 不生效)
- 按 Ctrl+F 输入
timeout,回车跳到第一个匹配,再按 Ctrl+Shift+L —— 此时只生成该选区内的所有光标 - 若选区内有引号包裹的
"timeout",而你只想改变量名,得先勾选Whole Word再搜,否则会连值一起框中
正则替换 + \b 边界控制,比纯多光标更精准
当“当前选中范围”里混着子串(如 user_timeout 和 timeout),多光标容易一锅端。这时用正则加单词边界,能稳住只动目标。
实操建议:在已选中的代码块内按 Ctrl+H,启用 .* 模式,查找框填 \btimeout\b,替换为 deadline。
-
\b匹配的是字母/数字/下划线与非这些字符之间的位置,所以user_timeout中的timeout不会被命中(因为前面是_,属于单词字符) - 注意:中文前后不触发
\b,若选区含中英文混排,得改用(? - 替换前务必点
Find All,看右下角计数是否符合预期——尤其要检查是否漏掉了行首或行尾的匹配
Alt+F3 全选关键词?小心它根本不认选区
Alt+F3 是全局暴力匹配,它完全忽略你当前有没有选中内容,也不管你在哪一行。想限制范围,就别用它。
真正安全的替代方案只有两个:Ctrl+Shift+L(基于当前搜索结果)或 Ctrl+Alt+G(基于当前选中文本),但二者都要求你先手动控制好初始选区或搜索范围。
-
Ctrl+Alt+G必须在关闭正则模式(.*未亮)下使用,否则行为不可控 - 若按
Ctrl+Alt+G没反应,打开Preferences → Key Bindings检查是否被插件覆盖 - 所有多光标操作后,一旦你按了方向键或删除键,光标就会合并——想补救只能按
Ctrl+U撤销上一步,不能靠重做找回来
Find 看高亮,比事后逐行检查快十倍。

















