多光标编辑 #

什么是多光标? #

多光标编辑是 VSCode 最强大的功能之一,它允许你同时在多个位置进行编辑,大幅提升批量修改的效率。

text
┌─────────────────────────────────────────────────────────────┐
│                     单光标 vs 多光标                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  单光标编辑:                                                │
│  const user1 = 'Alice|';                                    │
│  const user2 = 'Bob';                                       │
│  const user3 = 'Charlie';                                   │
│  需要修改 3 次                                               │
│                                                             │
│  多光标编辑:                                                │
│  const user1 = 'Alice|';                                    │
│  const user2 = 'Bob|';                                      │
│  const user3 = 'Charlie|';                                  │
│  一次修改全部完成                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

添加光标 #

鼠标操作 #

功能 Mac Windows/Linux 说明
添加光标 ⌥+点击 Alt+点击 在点击位置添加光标
列选择 ⇧⌥+拖动 Shift+Alt+拖动 矩形区域选择

键盘操作 #

功能 Mac Windows/Linux 说明
在上方添加光标 ⌥⌘↑ Ctrl+Alt+↑ 在上方行添加光标
在下方添加光标 ⌥⌘↓ Ctrl+Alt+↓ 在下方行添加光标
在下一个匹配处添加光标 ⌘D Ctrl+D 选择下一个匹配项
选择所有匹配项 ⇧⌘L Ctrl+Shift+L 选择所有匹配项

使用 ⌘D / Ctrl+D 选择 #

基本用法 #

text
1. 选中一个词
2. 按 ⌘D / Ctrl+D
3. 继续按 ⌘D / Ctrl+D 选择更多匹配项
4. 同时编辑所有选中位置

示例:批量修改变量名 #

javascript
// 原始代码
const userName = 'Alice';
console.log(userName);
return userName;

// 操作步骤:
// 1. 选中第一个 "userName"
// 2. 按 ⌘D / Ctrl+D 两次(选择所有 userName)
// 3. 输入新的变量名 "name"

// 修改后
const name = 'Alice';
console.log(name);
return name;

使用 ⇧⌘L / Ctrl+Shift+L 选择所有 #

基本用法 #

text
1. 选中一个词
2. 按 ⇧⌘L / Ctrl+Shift+L
3. 一次性选择所有匹配项

示例:修改所有相同内容 #

javascript
// 原始代码
const user = {
    name: 'Alice',
    age: 25
};

const admin = {
    name: 'Bob',
    age: 30
};

// 操作步骤:
// 1. 选中 "name"
// 2. 按 ⇧⌘L / Ctrl+Shift+L
// 3. 输入 "username"

// 修改后
const user = {
    username: 'Alice',
    age: 25
};

const admin = {
    username: 'Bob',
    age: 30
};

列选择模式 #

进入列选择 #

功能 Mac Windows/Linux 说明
切换列选择模式 ⇧⌥⌘→ Shift+Alt+Ctrl+→ 切换列选择
鼠标列选择 ⇧⌥+拖动 Shift+Alt+拖动 矩形选择

列选择示例 #

javascript
// 原始代码
const a = 1;
const b = 2;
const c = 3;

// 使用列选择选中 "const "
const a = 1;
const b = 2;
const c = 3;

// 删除后
a = 1;
b = 2;
c = 3;

多光标实战案例 #

案例1:批量添加前缀 #

javascript
// 原始代码
Alice
Bob
Charlie

// 操作步骤:
// 1. ⌥⌘↓ / Ctrl+Alt+↓ 在每行添加光标
// 2. 输入 "const user"

// 修改后
const userAlice
const userBob
const userCharlie

案例2:批量添加引号 #

javascript
// 原始代码
Alice
Bob
Charlie

// 操作步骤:
// 1. ⌥⌘↓ / Ctrl+Alt+↓ 添加多光标
// 2. Home 跳到行首,输入 "
// 3. End 跳到行尾,输入 "

// 修改后
"Alice"
"Bob"
"Charlie"

案例3:批量修改数组元素 #

javascript
// 原始代码
const items = [
    apple,
    banana,
    orange
];

// 操作步骤:
// 1. 选中 "apple"
// 2. ⌘D / Ctrl+D 选择其他水果名
// 3. 输入 "'" 包裹

// 修改后
const items = [
    'apple',
    'banana',
    'orange'
];

案例4:批量添加注释 #

javascript
// 原始代码
const a = 1;
const b = 2;
const c = 3;

// 操作步骤:
// 1. ⌥⌘↓ / Ctrl+Alt+↓ 在每行添加光标
// 2. Home 跳到行首
// 3. 输入 "// "

// 修改后
// const a = 1;
// const b = 2;
// const c = 3;

高级技巧 #

1. 撤销光标选择 #

在使用 ⌘D / Ctrl+D 选择时,如果选多了:

text
按 ⌘U / Ctrl+U 撤销上一个光标选择

2. 跳过某个匹配项 #

在使用 ⌘D / Ctrl+D 时,如果想跳过某个匹配项:

text
按 ⌘K ⌘D / Ctrl+K Ctrl+D 跳过当前匹配,选择下一个

3. 使用正则表达式选择 #

text
1. ⌘F / Ctrl+F 打开搜索
2. 启用正则表达式模式
3. 输入正则表达式
4. 按 ⌥Enter / Alt+Enter 选择所有匹配项

正则选择示例 #

javascript
// 原始代码
const user_name = 'Alice';
const user_age = 25;
const user_email = 'alice@example.com';

// 操作步骤:
// 1. ⌘F / Ctrl+F 打开搜索
// 2. 启用正则表达式
// 3. 输入 "user_\w+"
// 4. ⌥Enter / Alt+Enter 选择所有匹配项
// 5. 批量修改

// 修改后
const userName = 'Alice';
const userAge = 25;
const userEmail = 'alice@example.com';

多光标操作流程 #

text
┌─────────────────────────────────────────────────────────────┐
│                     多光标编辑流程                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  开始                                                        │
│   │                                                         │
│   ├─────▶ 相同内容?                                         │
│   │           │                                             │
│   │           ├─ 是 ─▶ ⌘D / Ctrl+D 逐个选择                 │
│   │           │        或 ⇧⌘L / Ctrl+Shift+L 全选           │
│   │           │                                             │
│   │           └─ 否 ─▶ 连续行?                              │
│   │                      │                                  │
│   │                      ├─ 是 ─▶ ⌥⌘↓ / Ctrl+Alt+↓         │
│   │                      │                                  │
│   │                      └─ 否 ─▶ ⌥+点击 / Alt+点击         │
│   │                                                          │
│   └─────▶ 编辑内容                                           │
│              │                                              │
│              └─────▶ 完成                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

快捷键速查表 #

添加光标 #

功能 Mac Windows/Linux
在上方添加光标 ⌥⌘↑ Ctrl+Alt+↑
在下方添加光标 ⌥⌘↓ Ctrl+Alt+↓
添加下一个匹配项 ⌘D Ctrl+D
添加上一个匹配项 ⌘K ⌘D Ctrl+K Ctrl+D
选择所有匹配项 ⇧⌘L Ctrl+Shift+L
撤销光标 ⌘U Ctrl+U

列选择 #

功能 Mac Windows/Linux
列选择模式 ⇧⌥⌘→ Shift+Alt+Ctrl+→
鼠标列选择 ⇧⌥+拖动 Shift+Alt+拖动

常见问题 #

Q: 如何取消多光标? #

A: 按 Esc 键取消所有多光标,只保留一个光标。

Q: 多光标有数量限制吗? #

A: 默认限制是 10000 个光标,可以在设置中修改 editor.multiCursorLimit

Q: 如何在多光标模式下移动光标? #

A: 使用方向键可以同时移动所有光标。

练习建议 #

练习1:批量修改变量名 #

text
1. 创建一个包含多个相同变量名的文件
2. 使用 ⌘D / Ctrl+D 逐个选择
3. 批量修改变量名

练习2:批量添加内容 #

text
1. 创建多行文本
2. 使用 ⌥⌘↓ / Ctrl+Alt+↓ 添加多光标
3. 在行首/行尾添加内容

练习3:列选择编辑 #

text
1. 创建多行代码
2. 使用 ⇧⌥+拖动 / Shift+Alt+拖动 进行列选择
3. 批量修改选中区域

下一步 #

现在你已经掌握了多光标编辑,接下来学习:

最后更新:2026-04-11