VS Code 多光标编辑与高级选择技巧
VS Code 多光标编辑功能允许同时在多个位置编辑代码,大幅提高编辑效率。配合高级选择技巧,可以快速完成复杂的批量编辑任务。
多光标创建方式
鼠标操作
- Alt + 点击: 在点击位置添加光标
- Ctrl + Alt + 上/下箭头: 在上方或下方添加光标
- Ctrl + U: 撤销最后一个光标
键盘操作
- Ctrl + Alt + 上/下箭头: 添加光标
- Ctrl + Alt + 左/右箭头: 向左或向右扩展选择
快捷选择
- Ctrl + D: 选择下一个相同的词
- Ctrl + Shift + L: 选择所有相同的词
- Ctrl + F2: 选择所有当前词的实例
高级选择技巧
列选择模式
- Shift + Alt + 拖动: 列选择
- Ctrl + Shift + Alt + 上/下箭头: 列选择扩展
智能选择
- Shift + Alt + →: 扩展选择到下一个语法单元
- Shift + Alt + ←: 收缩选择
- Ctrl + Shift + →: 扩展选择到下一个单词
- Ctrl + Shift + ←: 收缩选择到上一个单词
快速跳转和选择
- Ctrl + G: 跳转到指定行
- Ctrl + T: 跳转到符号
- Ctrl + Shift + O: 跳转到文件中的符号
- Ctrl + P: 快速打开文件
实用场景
批量重命名变量
javascript// 原始代码 const userName = 'John'; const userAge = 25; const userEmail = 'john@example.com'; // 操作:双击 userName,按 Ctrl + D 两次,然后修改 const firstName = 'John'; const firstAge = 25; const firstEmail = 'john@example.com';
批量修改属性
javascript// 原始代码 const obj = { name: 'John', age: 25, email: 'john@example.com' }; // 操作:选择所有属性名,添加引号 const obj = { 'name': 'John', 'age': 25, 'email': 'john@example.com' };
批量添加注释
javascript// 选择多行,按 Ctrl + / // const line1 = 'code'; // const line2 = 'code'; // const line3 = 'code';
正则表达式查找替换
使用正则表达式
- Ctrl + H: 打开查找替换
- Alt + R: 启用正则表达式模式
- Ctrl + Alt + Enter: 替换所有
正则表达式示例
javascript// 查找: console\.log\((.*)\) // 替换: console.info($1) // 将所有 console.log 替换为 console.info
捕获组使用
javascript// 查找: (\w+)\.(\w+)\((.*)\) // 替换: $2($1, $3) // 将 obj.method(args) 转换为 method(obj, args)
高级编辑技巧
多行编辑
- Shift + Enter: 在当前行下方插入新行
- Ctrl + Enter: 在当前行上方插入新行
- Ctrl + Shift + K: 删除当前行
代码格式化
- Shift + Alt + F: 格式化整个文档
- Ctrl + K, Ctrl + F: 格式化选中部分
代码移动
- Alt + 上/下箭头: 移动当前行
- Shift + Alt + 上/下箭头: 复制当前行
代码折叠
- Ctrl + K, Ctrl + 0: 折叠所有
- Ctrl + K, Ctrl + J: 展开所有
- Ctrl + K, Ctrl + [: 折叠当前区域
- Ctrl + K, Ctrl + ]: 展开当前区域
自定义快捷键
在 keybindings.json 中自定义快捷键:
json[ { "key": "ctrl+shift+;", "command": "editor.action.insertCursorAtEndOfEachLineSelected", "when": "editorTextFocus" } ]
注意事项
- 多光标编辑在大量光标时可能影响性能
- 使用 Ctrl + U 可以撤销光标操作
- 正则表达式替换前建议预览
- 复杂操作可以录制宏
- 合理使用选择历史记录(Ctrl + Shift + G)