如何使用VSCode在多行代码前后统一添加特定字符?
- 内容介绍
- 文章标签
- 相关推荐
本文共计867个文字,预计阅读时间需要4分钟。
直接按+Ctr+Alt+↓(Windows/Linux)或+Cmd+Option+↓(macOS)向下追加光标,再按+Home,输入内容即可批量加前缀。但+Home默认跳到软行首——即缩进开始,不是文件最左边。例如,某行开头有4个空格,光标停在第五列,而非第一列。
想插到绝对行首(无视缩进),得先选中所有目标行(Ctrl+Shift+L),再按 Ctrl+Shift+I(macOS 是 Cmd+Shift+I)进入列选择模式,然后按 ← 或 Home 移到真正最左,再输入。这个组合对齐更稳,适合加 //、const、this. 这类必须顶格的前缀。
在行尾批量加后缀,别靠鼠标拖,用快捷键准确定位
鼠标按住 Alt(Windows/Linux)或 Option(macOS)再拖选行尾,容易错位,尤其当各行长度不一时。更可靠的是:先用鼠标或 Shift+↓ 选中多行,然后直接按 Ctrl+Shift+I(Windows/Linux)或 Cmd+Shift+I(macOS)。这个命令叫 editor.action.insertCursorAtEndOfEachLine,它会把每个光标精准放到各自行末(换行符前),包括空行。
常见误操作是先按 Ctrl+Shift+L 再狂按 End —— End 不广播给所有光标,只作用于当前焦点行。所以务必跳过这一步,直接用 Ctrl+Shift+I。
正则替换处理大批量或带条件的增删,但得小心空行和缩进
行数超过二三十行,或者需要跳过注释、空行、缩进行时,正则比手动光标更可靠。打开 Ctrl+H,点 .* 启用正则,搜索 ^(?!\s*$)(.*)$,替换为 // ,就能给所有非空行加注释前缀,且保留原有缩进。
几个关键点:
-
^和$在 VSCode 中默认匹配行首/行尾,不是整个文档首尾 - 别勾选
. matches newline,否则.*会跨行吞内容 - 空行会被
^(.*)$匹配成空字符串,结果变成//,用^(?!\s*$)(.*)$可排除纯空白行 - 如果想给每行加双引号,替换写成
"$1",不是"$0"——$0是整行含换行符,会破坏格式
列选择粘贴内容只生效于第一行,这是设计,不是 bug
用 Alt+拖选 或 Ctrl+Shift+I 创建多光标后,按 Ctrl+V 粘贴,只有第一行出现内容,其余光标位置不会同步。这不是故障,是 VSCode 明确的行为:列选择只负责定位,不接管剪贴板分发。
想批量填相同内容,必须手动键盘输入;如果非要用粘贴,得先清空所有光标位置(Delete 或 Backspace),再单点第一行粘贴,然后用 Ctrl+D 选中所有目标位置,最后 Ctrl+V。这点极容易被忽略,直到你发现改了十行,只有一行变了。
本文共计867个文字,预计阅读时间需要4分钟。
直接按+Ctr+Alt+↓(Windows/Linux)或+Cmd+Option+↓(macOS)向下追加光标,再按+Home,输入内容即可批量加前缀。但+Home默认跳到软行首——即缩进开始,不是文件最左边。例如,某行开头有4个空格,光标停在第五列,而非第一列。
想插到绝对行首(无视缩进),得先选中所有目标行(Ctrl+Shift+L),再按 Ctrl+Shift+I(macOS 是 Cmd+Shift+I)进入列选择模式,然后按 ← 或 Home 移到真正最左,再输入。这个组合对齐更稳,适合加 //、const、this. 这类必须顶格的前缀。
在行尾批量加后缀,别靠鼠标拖,用快捷键准确定位
鼠标按住 Alt(Windows/Linux)或 Option(macOS)再拖选行尾,容易错位,尤其当各行长度不一时。更可靠的是:先用鼠标或 Shift+↓ 选中多行,然后直接按 Ctrl+Shift+I(Windows/Linux)或 Cmd+Shift+I(macOS)。这个命令叫 editor.action.insertCursorAtEndOfEachLine,它会把每个光标精准放到各自行末(换行符前),包括空行。
常见误操作是先按 Ctrl+Shift+L 再狂按 End —— End 不广播给所有光标,只作用于当前焦点行。所以务必跳过这一步,直接用 Ctrl+Shift+I。
正则替换处理大批量或带条件的增删,但得小心空行和缩进
行数超过二三十行,或者需要跳过注释、空行、缩进行时,正则比手动光标更可靠。打开 Ctrl+H,点 .* 启用正则,搜索 ^(?!\s*$)(.*)$,替换为 // ,就能给所有非空行加注释前缀,且保留原有缩进。
几个关键点:
-
^和$在 VSCode 中默认匹配行首/行尾,不是整个文档首尾 - 别勾选
. matches newline,否则.*会跨行吞内容 - 空行会被
^(.*)$匹配成空字符串,结果变成//,用^(?!\s*$)(.*)$可排除纯空白行 - 如果想给每行加双引号,替换写成
"$1",不是"$0"——$0是整行含换行符,会破坏格式
列选择粘贴内容只生效于第一行,这是设计,不是 bug
用 Alt+拖选 或 Ctrl+Shift+I 创建多光标后,按 Ctrl+V 粘贴,只有第一行出现内容,其余光标位置不会同步。这不是故障,是 VSCode 明确的行为:列选择只负责定位,不接管剪贴板分发。
想批量填相同内容,必须手动键盘输入;如果非要用粘贴,得先清空所有光标位置(Delete 或 Backspace),再单点第一行粘贴,然后用 Ctrl+D 选中所有目标位置,最后 Ctrl+V。这点极容易被忽略,直到你发现改了十行,只有一行变了。

