VS Code 用了 5 年,这 15 个功能我才发现——老程序员的自我检讨报告

3 阅读10分钟

🧙 VS Code 用了 5 年,这 15 个功能我才发现——老程序员的自我检讨报告

阅读时间:约 15 分钟
适合人群:每天开着 VS Code 但只会 Ctrl+S 的人、装了 200 个插件但只用 3 个的人、以及鼠标比键盘用得多的程序员
作者状态:坐在工位上,看着隔壁实习生用 VS Code 编辑器流畅地重构代码,而我还在右键菜单找"重命名",感到深深的自我怀疑


前言:被实习生震惊的那一天

那是一个普通的下午。

我在旁边看实习生改一段代码,他手指飞速移动,按了几个我看不清的快捷键,然后——整个文件里所有的变量名,同时改掉了。

我以为他在用什么神秘插件。

他说:"这是 VS Code 自带的功能,F2 重命名符号。"

我用了五年 VS Code,不知道有 F2。

那一刻,我决定好好研究一下这个我以为自己"已经很熟"的编辑器。

以下是我的自我检讨报告,也是你可能错过了 N 年的 VS Code 神技。


一、F2:重命名符号,改一处全改——不是 Ctrl+H

大多数人改变量名,第一反应是 Ctrl+H 全局替换。

然后愉快地把注释里的、字符串里的、完全不相关的同名词也一起替换掉了。

正确姿势:光标放到变量/函数名上,按 F2。

VS Code 会分析语言的语义,只替换真正相关的引用,注释和字符串里的不动。跨文件的引用也一并更新。

💡 老鸟提醒:对于支持 Language Server(TypeScript、Python、Go、Java 等)的项目效果最好。原生 JS 没有类型信息,有时会漏。上 TypeScript 是对的,别再拖了。


二、Ctrl+D:多光标选中,批量编辑的正确方式

场景:你需要把文件里多个地方的 console.log 同时改掉。

新手做法:Ctrl+H 替换,或者一个一个手改。

老鸟做法:

  1. 选中一个 console.log
  2. Ctrl+D,选中下一个相同的词
  3. 继续按 Ctrl+D,继续选中……
  4. 所有目标都选中后,直接打字——所有位置同时编辑

跳过某一个?按 Ctrl+K,再按 Ctrl+D 跳到下一个。

💡 进阶用法Ctrl+Shift+L 一次选中文件里所有相同的词,直接全部多光标。不过要小心,别把不想改的也选进去了。


三、Ctrl+P:快速跳转文件,扔掉文件树

很多人打开文件,是在左侧文件树里一层层点进去找。

这在文件只有 10 个的时候没问题。项目大了就是折磨。

Ctrl+P,直接输文件名关键词,模糊匹配,回车打开。

Ctrl+P → 输入 "usrauth" → 找到 src/modules/user/auth.service.ts

还有更多玩法:

输入效果
Ctrl+P → 直接输文件名跳转到文件
Ctrl+P → 输入 @跳转到当前文件的某个符号(函数/变量)
Ctrl+P → 输入 :行号跳转到指定行
Ctrl+Shift+P打开命令面板,运行任何 VS Code 命令
Ctrl+G直接跳转到行号

💡 Ctrl+Shift+P 是真正的万能钥匙。忘了快捷键?打命令面板搜。找不到设置在哪?打命令面板搜。不知道某个功能叫什么?打命令面板搜。它是 VS Code 的大脑。


四、多光标的另一种方式:Alt+Click

上面讲了 Ctrl+D 选相同词,但有时你想在任意多个位置同时打字,怎么办?

按住 Alt,鼠标点击任意位置,就在那里加一个光标。

想在 10 行的行首同时加个东西?按住 Alt+Shift,鼠标从第一行拖到第十行,竖向列选择,一次搞定。

原来:
const a = 1
const b = 2
const c = 3

Alt+Shift 竖向选中行首,输入 "export " → 瞬间变成:
export const a = 1
export const b = 2
export const c = 3

这个操作我第一次见到,觉得自己白活了。


五、Ctrl+/Shift+Alt+A:注释快捷键

注释代码,你是不是还在手动输入 //

  • Ctrl+/:行注释(选中多行也可以)
  • Shift+Alt+A:块注释(/* */

选中一段代码,Ctrl+/,瞬间注释。再按一次,取消注释。就这么简单,但很多人就是不知道。

💡 VS Code 会根据当前文件语言自动选择注释符号,Python 用 #,HTML 用 <!-- -->,你不需要记语法。


六、Ctrl+Shift+K vs Ctrl+X:删行的两种姿势

删掉当前行:

  • Ctrl+Shift+K:直接删除,不进剪贴板
  • Ctrl+X(不选内容):剪切整行,进剪贴板,可以粘贴到别处

很多人删行用 Ctrl+X,然后剪贴板里全是废代码,下次 Ctrl+V 贴出来一坨,一脸懵。

养成习惯:删了不用的就 Ctrl+Shift+K,要移动的才 Ctrl+X


七、Alt+↑/↓:移动代码行,不用剪切粘贴

想把某一行(或选中的多行)向上/向下移动?

  • 新手:剪切 → 移动光标 → 粘贴(三步,容易粘错位置)
  • 老鸟:Alt+↑Alt+↓,直接把行拖上去或拖下来

配合 Shift+Alt+↑/↓ 可以复制整行到上方或下方,不用 Ctrl+CCtrl+V


八、内置终端:别再切窗口了

很多人写代码开着 VS Code,跑命令开着另一个终端窗口,来回 Alt+Tab 切换。

Ctrl+反引号(\)`,直接在 VS Code 里打开集成终端。

可以同时开多个终端,分屏,切换:

Ctrl+`         → 打开/关闭终端
Ctrl+Shift+`   → 新建一个终端

终端里可以跑任何命令,路径自动在项目根目录,不用 cdcd 去。

💡 进阶:在终端面板右上角可以把终端改成分屏布局,代码和命令同屏,不用切换,开发体验直接上一个台阶。


九、时间线(Timeline):本地版"后悔药",不依赖 Git

场景:你改了一段代码,没 commit,然后发现改错了,想回到之前的版本。

没有 Git 记录,没有备份,怎么办?

VS Code 有内置的本地历史记录。

在左侧文件树底部找到"时间线(TIMELINE)"面板,点开当前文件,能看到每次保存的快照,点一下就能对比差异,右键可以恢复到那个版本。

这功能救过我的命不止一次。

⚠️ 注意:本地历史记录保存在本机,换电脑或重装系统会丢。重要代码还是要 commit,时间线只是应急后悔药。


十、代码折叠:让长文件不再让人崩溃

一个几百行的文件,找函数找得眼花?

  • Ctrl+Shift+[:折叠当前代码块
  • Ctrl+Shift+]:展开当前代码块
  • Ctrl+K, Ctrl+0:折叠所有代码块
  • Ctrl+K, Ctrl+J:展开所有代码块

折叠之后,只看函数签名,结构一目了然,想看哪个展开哪个。

💡 进阶:在代码里写 // #region// #endregion,可以自定义折叠区域,给代码分段,超级好用。


十一、Ctrl+Shift+F:全局搜索,但你可能没用对

全局搜索大家都会,但有几个细节很多人忽略了:

Ctrl+Shift+F   → 打开全局搜索

搜索框旁边三个小图标,从左到右:

  1. Aa:区分大小写
  2. \b单词\b:全词匹配(搜 user 不会匹配 username
  3. .*:正则表达式模式

下面还有"包含的文件"和"排除的文件"——可以指定只搜 src/**/*.ts,排除 node_modules(虽然默认已排除,但自定义 dist/** 之类的要手动加)。

💡 用正则搜索的技巧:搜 console\.(log|warn|error) 可以一次找出所有调试用的日志语句,提交前统一清理,专业感 +50。


十二、代码片段(Snippets):自定义你自己的快捷模板

你是不是每次都要手写 try { } catch (error) { console.error(error) }

每次都要敲 useEffect(() => { return () => {} }, [])

一次性做成代码片段,以后输入缩写 + Tab 直接展开。

打开命令面板 Ctrl+Shift+P,搜索"Configure User Snippets",选语言,然后写:

{
  "Try Catch Block": {
    "prefix": "tc",
    "body": [
      "try {",
      "  $1",
      "} catch (error) {",
      "  console.error('$2', error)",
      "}"
    ],
    "description": "Try catch block"
  }
}

保存后,在 JS/TS 文件里输入 tc + Tab,直接展开,$1$2 是光标跳转位置。

这是真正的懒人改造,能节省的时间日积月累,非常可观。


十三、Peek Definition vs Go to Definition

大多数人知道 F12 是"跳转到定义",但很多人不知道还有 Peek Definition

  • F12:直接跳转到定义所在文件(当前文件消失)
  • Alt+F12就地预览定义,弹出一个小窗口在当前位置显示定义代码,不跳走

看一个函数实现,不想离开当前上下文?Alt+F12 完美。

💡 类似的还有 Shift+F12(查找所有引用),也可以 Peek 方式在当前页内显示,不用满世界跳来跳去。


十四、Zen Mode:关掉所有干扰,只剩代码

有时候你需要专注写代码,不想被任何 UI 元素打扰。

Ctrl+K Z(先按 Ctrl+K,放开,再按 Z)进入 Zen Mode(禅模式):

  • 隐藏侧边栏
  • 隐藏状态栏
  • 隐藏标签页
  • 编辑器全屏居中
  • 世界安静了

Escape 两次退出。

💡 这功能适合写长函数、理复杂逻辑的时候用。当然,如果你工位旁边有个叫"产品经理"的生物,Zen Mode 也救不了你。


十五、.vscode 文件夹:把配置提交到项目里

最后说一个被严重低估的功能。

在项目根目录建一个 .vscode 文件夹,里面可以放:

settings.json:项目级编辑器配置

{
  "editor.tabSize": 2,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

extensions.json:推荐安装的插件列表

{
  "recommendations": [
    "esbenp.prettier-vscode",
    "dbaeumer.vscode-eslint",
    "eamodio.gitlens"
  ]
}

launch.json:调试配置

.vscode 提交到 Git 里,所有人 clone 项目后,VS Code 会自动提示安装推荐插件,共享同一套代码风格配置。

再也不用跟新同事说"哦对,你需要装个 Prettier,然后改一下 tabSize……"

💡 当然,个人习惯性的配置(比如字体大小、主题颜色)别放进来,那些放用户级别的 settings.json 里。项目级的只放跟项目一致性有关的设置。


总结速查表

快捷键功能告别的坏习惯
F2重命名符号用 Ctrl+H 无差别替换
Ctrl+D选中下一个相同词(多光标)一个一个手改
Ctrl+P快速跳转文件在文件树里翻来翻去
Alt+Click任意位置添加光标复制粘贴 N 次
Ctrl+/行注释手打 //
Ctrl+Shift+K删除当前行用 Ctrl+X 污染剪贴板
Alt+↑/↓移动行剪切粘贴移行
Ctrl+反引号打开集成终端来回切窗口
Timeline本地文件历史文件改崩了就哭
Ctrl+K ZZen 模式被 UI 分散注意力
Alt+F12就地预览定义跳来跳去迷失方向
.vscode/项目共享配置口口相传配置方式

结语:工具是第二大脑,得好好用

VS Code 之所以能在短短几年把 Sublime Text、Atom 这些前辈踩在脚下,不是因为它漂亮,是因为它确实强大。

但强大的工具,用不好就只是个记事本。

这 15 个功能,每一个都是真正节省时间的。今天学一个,用到熟,明天再学下一个。不用一口吃成胖子,但也别再用了五年只会 Ctrl+S。

如果这篇文章帮到了你,点个赞再走。 我会继续出系列,下一篇打算聊聊那些"装了但从不用"的 VS Code 插件——我帮你筛出 10 个真正值得装的,剩下那 190 个,卸了吧。


📌 系列往期
👉 《老程序员的 Git 避坑手册:这10个命令,我当年要是早知道就好了》
👉 《老程序员含泪整理:这12个Linux命令,新手用了都说早知道就好了》

📌 下期预告
《那些"装了等于没装"的 VS Code 插件:我帮你从200个里筛出真正有用的10个》


本文基于 VS Code 1.95+ 版本,部分快捷键在 macOS 上需要把 Ctrl 换成 Cmd。Windows 用户照单全收即可。

另外:不要问我为什么不用 JetBrains 全家桶——因为穷。