我先来还原一个让所有程序员血压升高的真实场景。
这是我曾经遇到过的
你正在写一个配置文件,或者一个测试用例,或者一段初始化数据。你从某个文档、某个表格、某个日志文件里,复制了一列值------十个用户名,十个 ID,十个环境变量,随便什么都行。
然后你回到代码里,面前是十行需要填这些值的空位。你盯着它们,手指悬在键盘上,脑子里已经开始计算了:复制第一个,Ctrl+V,下移一行,复制第二个,Ctrl+V,下移一行......重复十次。中间要是手抖粘错了一行,还得退回去重来。
想到要复制如此多次,就头痛的不得了
还好当时我想到了vscode的多光标的技能,但这又是一个痛苦的起点
你当然知道多光标。你按住 Alt,一列一列点出十个光标,然后一次性粘贴。但 VS Code 的多光标粘贴默认是把整块内容原封不动地塞进每一个光标位置。于是你在十个空位里得到了十份一模一样的十行数据。恭喜,代码成功变成了复读机。
这很蠢。真的。 当时我是这样吐槽vscode的
知道vscode新版发布,让我彻底闭口了
VS Code 最近更新了一个叫 Spreading block pasting(分散块粘贴) 的功能,专门治这种病。
它的逻辑简单到令人感动:你复制一个多行块,把它粘贴到单个光标位置,VS Code 会自动把每一行分配到后续的目标行上去。
什么意思?你复制了十行数据,光标停在第一行,按下 Ctrl+V。VS Code 不会把十行全塞进这一行,而是把第一行放这里,第二行放下面的行,第三行再往下...... 一行一行,自动铺开。
就像你把一叠扑克牌放在桌边一推------它们不是叠在一起,而是一张一张排开。
怎么开启这个"散弹枪"
这个行为由一个设置控制:editor.multiCursorPaste。
- 设为
spread(默认):粘贴时分散到多行。 - 设为
full:粘贴时把完整块塞进每个光标位置(旧行为)。
默认就是 spread,所以你什么都不用做,它已经生效了。
下面看看怎么操作
首先我们先使用多光标的方式来准备复制的内容

选中之后,按ctrl c
然后把多光标的位置法昂在需要复制地方

最后一步就是ctrl v

很多人第一眼可鞥觉得这个功能应该很少用吧,但是其实如果真的遇到了这种情况,如果没有这样的功能,那真的是遭老罪了,虽然现在有了AI,但不是每次AI都会给你满意的方法,最后还得是靠自己
以前你得手动在多行之间切换光标、逐个粘贴,现在只需要复制一次、粘贴一次。你省下的不是几秒钟,是注意力。
如果你确实需要把同一块内容复制到多个光标位置(比如批量插入相同的 import 语句),把设置改成 full 就行。它给了你选择,而不是替你决定。
没有人会在技术论坛上发帖问"怎么把一列数据快速填到十行里",因为这个问题太基础了,基础到大家默认"手动搞一下就行"。但手动搞一下,乘以每天几十次,就是巨大的浪费。
VS Code 这个更新没有加什么惊天动地的大功能,它只是把一个你每天都在做、但从来没觉得"这是个问题"的动作,从手动变成了自动。
你依然可以用老办法一行一行粘。但试过 spread 之后,你大概会想:我以前到底在干什么?