最可靠方法是正则替换:Ctrl+H启用正则,用^$(.+)$→"$1"为非空行加引号;多光标仅适用于结构干净的小批量文本,列选择易错位,引号失效常因选中状态、字符邻接或语法限制。

用正则替换给每行加双引号最可靠
直接 Ctrl+H(Windows/Linux)或 Cmd+Alt+F(macOS),打开替换面板,勾选左下角的 .*(Regular Expression)按钮,就能用正则批量处理。比多光标更稳,尤其适合 CSV、JSON key、数组元素这类结构化数据。
常见需求对应写法:
- 给每行非空内容加双引号(保留空行):
Find: ^(.+)$→Replace: "$1" - 只给纯标识符加引号(跳过已有引号、数字开头、含空格的行):
Find: \b([a-zA-Z_][a-zA-Z0-9_]*)\b→Replace: "$1" - 处理 JSON key(自动清理已有的引号并统一格式):
Find: ("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*:→Replace: "$2":
注意:^ 和 $ 必须配对使用,否则可能跨行匹配;.+ 会跳过空行,如果要包含空行,改用 ^.*$,但得确认目标场景是否真需要包裹空行。
多光标操作适合小批量、结构干净的文本
按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)把每行转成独立光标,再按 ",就能在每行开头加左引号;接着按 End(或 Cmd+→)跳到行尾,再按 " 补右引号。
这个方法快,但有硬性前提:
- 每行只能有一段待包裹内容(比如
user_id、name),不能带注释、空格、逗号等干扰字符 - 行末若有空格或制表符,先执行
Ctrl+Shift+P→ 输入Trim Trailing White Space清理,否则光标停在空格上,"会插在错误位置 - 别用鼠标拉选多行后直接按
"——Sublime 只会给第一行加引号,其余无效
为什么别用列选择(Alt+拖拽)加引号
列选择看着快,实际风险高:只要行长不一致,光标就会错位。比如第 3 行比前两行短一格,你拖出来的列区域在第 3 行就偏左了,结果是引号加在中间字符上,甚至切开变量名("u"ser_id)。
即使你用 Ctrl+Shift+↑/↓ 做“垂直多行选择”,也只适合所有行末对齐的场景(如整齐的配置项列表)。一旦有缩进、注释或不同长度的值,就容易漏掉或错包。
更隐蔽的问题是:某些插件(比如 AutoFileName、BracketHighlighter)会监听 " 键并阻止默认行为,表现就是按键没反应。禁用插件后记得重启 Sublime——热禁用不生效。
包裹选中文本时引号不生效?检查三个条件
选中一段文字后按 " 没反应,不是软件坏了,大概率是以下其一:
- 选区不是“普通选中”:如果是行选中(
Ctrl+L)、空光标、或列选中状态,Sublime 不触发包裹逻辑 - 光标紧邻字母/数字:比如在
sayHello()中选中Hello,前后是字母和括号,Sublime 判定为“不安全”,拒绝包裹。手动删掉前后字符再选一次就行 - 当前语法文件禁用了自动配对:比如在 .md 或 .txt 文件里,默认不启用引号包裹。临时切到
Plain Text语法(右下角点击切换)再试
真正容易被忽略的是语法上下文——同一个操作,在 JavaScript 文件里秒生效,在 SQL 或 YAML 里可能完全没反应,不是 bug,是设计如此。

















