必须用ctrl+shift+l(win/linux)或cmd+shift+l(macos)拆出多光标,再按home或←移至真正行首,才能稳定加引号;直接全选后输引号只作用于第一行,因ctrl+a是块选中而非多光标,仅首行光标响应输入。

必须用 Ctrl+Shift+L(Win/Linux)或 Cmd+Shift+L(macOS)拆出多光标,再按 Home 或 ← 移至真正行首,才能稳定加引号;直接全选后输引号只作用于第一行。
为什么 Ctrl+A 后按 " 只改第一行?
因为 Ctrl+A 是“块选中”,不是“多光标”。Sublime 只允许一个光标执行插入操作——你看到的高亮是视觉反馈,实际只有第一个光标在响应输入。其余行完全没被触发编辑状态。
- 误操作典型表现:第一行变成
"item,其余行原封不动 - 正确路径是:先选中目标行(可拖选、
Ctrl+L连续选、或Ctrl+Shift+↓扩展),再按Ctrl+Shift+L——这时每行开头会出现独立小竖线光标 - 若已开 Vintage 模式,
Ctrl+Shift+L被重映射为「选中到行尾」,必须关掉 Vintage 或改用正则路径
Home 按一次不够?缩进导致引号错位的真实原因
有缩进的行,Home 默认停在“文本起始处”(即缩进后的第一个非空白字符前),不是文件行首。比如 item,按一次 Home 光标停在 i 前,再按一次才跳到最左端。此时输 ",结果是 "item,而非 " item。
- Windows 用户可用
Ctrl+Home一步到位;macOS 用Cmd+Home - 更通用做法:按
←(左箭头)代替Home,它始终向行首移动,不受缩进逻辑干扰 - 空行也会获得光标,加完变成
"",如不需处理,操作前先删空行或用正则过滤
^ 正则替换加引号时,哪些写法会静默失败?
正则快,但 ^ 在 Sublime 里默认行为和直觉不同:它只在启用正则模式(点右下角 .*)后才生效;否则 ^ 被当字面量,替换无效果。更隐蔽的是负向断言兼容性问题。
- 常见翻车:
^(?=\S)在某些 Sublime 版本(尤其旧 Build)中会报错或静默跳过,动手前务必用三行测试 - 安全写法:给非空行加双引号,用
^(.+)$→"$1";空行自动跳过,无需断言 - JSON 字符串内换行会被
^匹配,导致引号插进字符串中间——此时必须关掉Wrap around和In selection - 别写
^["'],这是匹配并删除已有引号,不是跳过;要跳过,得用^(?![\'"])
列选择(Alt+拖拽)加引号为什么总对不齐?
列选择认的是像素列,不是逻辑行首。只要某行比其他行短一格,拖出来的区域就偏左,引号可能切开变量名(如 "user_id)或插进缩进中间。
- 即使所有行都以空格缩进,Tab 和空格混用也会导致视觉对齐但字节位置错乱
- 唯一能挽救列选的方法:先
Ctrl+Shift+P→ 输入Indentation: Convert to Spaces统一为纯空格,再操作 - 但不如直接走
Ctrl+Shift+L+←路径——它认的是文本行边界,不依赖视觉对齐
真正容易被忽略的点:引号加完是否紧贴内容,取决于光标是否真正在行首;而“行首”的定义,在 Sublime 里由编辑器底层光标定位逻辑决定,不是你眼睛看到的位置。











