🐸 青蛙编程网
首页 / 开发工具 / VSCode / 4. 编辑进阶

编辑进阶

这是什么:本章的技巧让编辑速度翻倍:自动补全少打字、多光标一次改一排、F2 重命名全局生效、格式化一键把代码理顺。

为什么用:「只会当记事本」和「会用编辑器」的差距全在这章——同样是改名,手改 20 处 vs F2 一秒;同样是排版,手动对齐缩进 vs 一键格式化。

如何用:每个技巧配一个场景,打开 playground 里的文件当场练。

自动补全:打两个字母按回车

输入时 VSCode 会弹出建议框(IntelliSense),根据语言和你文件里已有的词给出候选:

# 输入 pri 之后:
print        ← 方向键选中,Tab 或回车补全
  • Tab / 回车:接受建议;Esc:关掉建议框
  • 补全来源:语言关键词 + 当前文件里出现过的词 + 插件提供的语言服务(装了 Python 插件后,能补全标准库和自定义函数,还带参数提示)
  • 别背 API:函数名打到一半看候选列表,比翻文档快得多

多光标:一次改一排

场景:想把下面三行的 temp 全改成 result:

temp = load()
temp = clean(temp)
temp = save(temp)

两种玩法:

手法 操作 适合
Ctrl+D 光标放在 temp 上,连按 Ctrl+D,每按一次多选中下一个相同词 精确选中这几个
Alt+点击 按住 Alt(macOS:Option)在每行行首各点一下 任意位置加光标

多个光标同时存在时,打字、删除、粘贴都是所有光标一起动。改完按 Esc 退出多光标。

F2 重命名:全局改名不漏一处

变量、函数名改名的正确姿势:光标放在名字上按 F2,输入新名字回车——当前文件(装了语言插件则是整个项目)里所有引用点一起改,包括它被调用的地方。

对比手改:手改靠肉眼找,漏一处就是 undefined 或 NameError。F2 是「语义级」替换,它知道哪里是这个名字,注释和字符串不会被误伤。

常用编辑快捷键速查

快捷键 功能 场景
Ctrl+/ 注释/取消注释整行 调试时临时屏蔽一行
Alt+↑/↓ 整行上下移动 调整代码顺序
Shift+Alt+↓/↑ 复制整行到下/上一行 造相似行
Shift+Alt+F 格式化整个文档 保存前理顺缩进
Ctrl+S 保存 最常用的键,没有之一
Ctrl+Z 撤销 兜底

macOS 上 Alt 对应 Option、Ctrl 大多对应 Cmd。

格式化:一键把代码理顺

缩进乱、引号混、逗号空格随意的代码,Shift+Alt+F 一键整理(Python 装官方插件后可选 black 等格式化器,按底部提示选一个设为默认即可)。更狠的一招:设置里开启「保存时格式化」——

  1. Ctrl+, 打开设置,搜 format on save
  2. 勾选 Editor: Format On Save

之后每次 Ctrl+S 自动格式化,代码永远整洁,不用再纠结空格缩进这类琐事。

记忆口诀:补全回车少打字;D 键连按选中词;F2 改名全局变,保存顺手格式齐。

❓ 常见问题

Q1:输入代码没有补全弹框?

两种可能:① 文件没写扩展名(VSCode 不知道是什么语言,看右下角语言模式);② 该语言的语言服务没装(Python 需要官方 Python 插件,见第 5 章)。修复:补扩展名或装插件。

Q2:Ctrl+D 按多了选过头?

按 Ctrl+U 回退一次选择(或用 Ctrl+K Ctrl+D 跳过当前、选下一个)。多光标是「加选」逻辑,Esc 全部清空重来。

Q3:格式化把代码改得面目全非?

格式化只改排版不改逻辑,但不同 formatter 风格不同(引号、换行偏好)。修复:Ctrl+Z 撤销;Ctrl+, 搜 default formatter 选定一款并固定,团队统一用同一种。

📝 本章小结

  • 补全:Tab/回车接受,Esc 关闭;装语言插件后能补全项目内函数
  • 多光标:Ctrl+D 连按选相同词,Alt+点击 任意加光标
  • F2 语义级全局重命名,永不用手改变量名
  • 开启 Format On Save,缩进引号琐事交给机器

动手改

  1. 写 5 行 temp = ... 代码,用 Ctrl+D 全选 temp 改成 result
  2. 写一个 def greet(name): 函数并调用两次,F2 把 greet 改成 say_hi,观察调用处是否同步
  3. 写一段缩进混乱的 Python,开 Format On Save 后按 Ctrl+S 看魔法

上一章:文件与命令面板 · 下一章:插件 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。