当前位置: 首页 > news >正文

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

🧙 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+KvsCtrl+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 全家桶——因为穷。

http://www.cnnetsun.cn/news/1863799.html

相关文章:

  • 如何在2026年用BiliTools哔哩哔哩工具箱实现跨平台视频下载终极指南
  • 一款基于 .NET 开源、跨平台应用程序自动升级组件坦
  • 收藏!小白程序员必看:Agent框架如何让AI Agent真正“活”起来?
  • OFA模型与Dify平台集成:可视化构建图像描述AI工作流
  • BiliTools跨平台工具箱:高效管理B站资源的专业解决方案
  • 技术深度解析:ImStudio GUI布局设计器与实时预览引擎
  • CVAT平台部署与半自动标注实战:从零到一搭建高效标注环境
  • 巴瑞替尼Baricitinib 2mg或4mg治重度斑秃,近四成患者头发基本长回
  • vLLM 0.6.4 + Qwen-14B模型部署:从单卡到H100双卡并行,我的完整配置与避坑实录
  • 利用域代码实现Word中Mathtype公式的智能编号与精准交叉引用
  • 3步解决Mac NTFS写入难题:Nigate免费工具全面指南
  • 【nginx】从零开始:将WebSocket(WS)升级为安全WebSocket(WSS)的完整指南
  • 球谐函数在实时渲染中的妙用:从理论到游戏光照实践
  • 攻克Earthworm用户头像上传:从0到1的全栈实现指南
  • opencv人流量统计
  • FanControl零基础配置指南:5步打造智能静音散热系统
  • 终极指南:AppleRa1n免费解锁iOS 15-16设备激活锁的完整教程
  • 【AIAgent协作黄金法则】:SITS2026首席专家亲授3大人类-AI协同失效场景与7步落地框架
  • SAP策略50实战:手把手教你配置MTO的M+M模式,搞定可配置物料与里程碑开票
  • 终极指南:BiliTools如何成为你的B站全能助手
  • LeetCode热题100-和为 K 的子数组
  • 深度实战:使用zhihu-api构建知乎数据分析系统的完整指南
  • Kubernetes Pod 资源调度策略解析
  • 智能环境感应LED控制:光敏电阻与按键的联动设计
  • PostgreSQL 二进制安装全流程指南:从下载到远程连接
  • Adafruit_SH1106深度解析:如何为SH1106 OLED打造高性能嵌入式图形显示方案
  • GLM-4.1V-9B-Base应用指南:电商商品图识别与场景描述实战
  • 告别404!用Docker Compose一键部署GeoServer(含汉化与TIF影像发布避坑指南)
  • TikTok直播实时数据接入终极指南:解锁Node.js开发新境界
  • 终极游戏化编程学习指南:CodeCombat如何让代码学习像玩游戏一样简单有趣