使用Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS)启用多光标后,必须按Home两次或直接用Ctrl+Home/Cmd+Home确保光标在真正行首再输入引号,否则缩进不一致会导致引号位置错误;正则替换(^开头断言)更精准可控,适合条件加引号。

Ctrl+Shift+L 后按 Home 才算真正到行首
直接输引号前,必须确认光标在每行最左端,否则缩进不一致的行会把引号加进空格或 Tab 里。比如某行是 item,按一次 Home 光标停在 开头,再按一次才到真正行首;Windows 可用 Ctrl+Home 一步到位,macOS 用 Cmd+Home。
常见错误现象:加完发现有的引号贴着代码("item"),有的前面多出空格(" item")——就是光标没统一到位。
- 先选中目标行(鼠标拖选或
Ctrl+L连续选) - 按
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS)拆成多光标 - 按
Home一次,再按一次;或直接用Ctrl+Home/Cmd+Home - 输入
"或',立刻生效
用正则替换 ^ 更适合带条件加引号
比如只给非空行、不含已有引号的行加双引号,^ 配合正向/负向断言就能控制范围,多光标做不到这点。
打开 Ctrl+H → 勾选 .*(正则模式)→「Find What」填 ^(?=\S)(?!["']) →「Replace With」填 " → 点「全部替换」。
说明:^(?=\S) 确保行首不是空白,(?!["']) 排除已带引号的行。别漏掉括号和问号,写成 ^["'] 就变成匹配并删除了。
- 要同时加行尾引号和逗号?替换栏填
",再另起一次替换,查找$,替换为", - JSON 字符串值里的换行会被
^误匹配,此时必须关掉「Wrap around」和「In selection」 - 大文件(>5k 行)下正则替换比多光标更稳,响应无延迟
列选择(Alt+拖拽)不适合加行首引号
视觉上对齐的“行首”,实际可能是不同缩进层级。比如一行是 if (x) {(4空格),另一行是 return y;(2空格),Alt+拖拽选出来的列根本不在同一逻辑位置。
结果是引号加得参差不齐:"if (x) { 和 "return y;,后续格式化或语法检查会报错。
- 真要用列选,先
Ctrl+Shift+P→ 输入Indentation: Convert to Spaces统一缩进 - 或者改用
Ctrl+Shift+L+Home,它认的是文本行边界,不是像素列 - Markdown 列表项(
- item)、YAML 键名(key:)这类结构,列选基本不可靠
加完引号后别急着保存,先检查空格和转义
Sublime 默认不会自动处理引号内的反斜杠或内部引号,比如原行是 file"name.txt,加双引号后变成 "file"name.txt",直接语法错误。
另外,某些插件(如 JsPrettier 或 AutoFileName)可能在保存时自动删掉你刚加的引号前后的空格,或把 ' 转成 "。
- 加完后快速扫一眼是否有
"..."..."这类嵌套冲突 - 用
Ctrl+F搜"[^"]*"(简单匹配双引号对),看是否成对出现 - 如果数据来自 CSV 或日志,先用正则
^[ \t]*清掉行首空格,再加引号,避免" value"

















