基础编辑
Visual Studio Code 首先是一个编辑器,包含了高效源代码编辑所需的功能。这个话题会带你了解编辑器的基础知识,并帮助你快速掌握代码。
键盘快捷键
写代码时能保持双手握键是提高生产力的关键。VS Code 拥有丰富的默认键盘快捷键,并且允许自定义。
- 键盘快捷键参考——通过下载参考表,学习最常用和流行的快捷键。
- 安装Keymap扩展——在VS Code中使用旧编辑器(如Sublime Text、Atom和Vim)的快捷键,安装Keymap扩展。
- 自定义快捷键——更改默认快捷键以符合你的风格。
多重选择(多光标)
VS Code 支持多个光标,实现快速且同时的编辑。你可以通过Alt+Click添加次要光标(渲染得更细)。每个光标根据其所处的上下文独立工作。添加更多光标的常见方法是使用 ⌥⌘↓(Windows Ctrl+Alt+Down,Linux Shift+Alt+Down)或 ⌥⌘↑(Windows Ctrl+Alt+Up,Linux Shift+Alt+Up),将光标插入于下方或上方。
你的显卡驱动(比如NVIDIA)可能会覆盖这些默认快捷方式。

⌘D(Windows,Linux Ctrl+D)选择光标上的单词,或当前选择的下一次出现。
使用多光标查找时,可以通过运行⌘K ⌘D(Windows,Linux Ctrl+K Ctrl+D)跳过下一次匹配。这有助于避免添加不需要的 编辑重复文本时的选段。

你也可以用⇧⌘L添加更多光标(Windows,Linux Ctrl+Shift+L),这样每次当前选中的文本都会添加一个选项。
多光标修饰符
如果你想在macOS上按Cmd+Click,在Windows和Linux上按Ctrl+Click更改多重光标的修饰键,可以用
设置可以设置为:
ctrlCmd- 映射到 Windows 上的 Ctrl 和 macOS 上的 Cmd。替代- 现有默认Alt。
菜单中还有一个选项:选择>切换到Ctrl+点击多光标,或选择>切换到Alt+点击多光标,快速切换此设置。
Go to Definition和Open Link手势也会尊重该设置并调整,使其不冲突。例如,当ctrlCmd,可以通过Ctrl/Cmd+点击添加多个光标,打开链接或进入定义时也可以通过Alt+Click调用。
缩小/扩展选择
快速缩小或扩大当前的选择。用⌃⇧⌘←(Windows,Linux Shift+Alt+Left)和⌃⇧⌘→(Windows,Linux Shift+Alt+Right)触发。
这里有一个用⌃⇧⌘→(Windows,Linux Shift+Alt+Right)扩展选择的示例:

列(框)选择
将光标放在一个角落,然后按住Shift+Alt,同时拖到对角:

当使用 Ctrl/Cmd 作为多光标修改键时,这个按钮会变成 Shift+Ctrl/Cmd。
macOS和Windows上也有默认的列选择快捷键,但在Linux上没有。
| 说明 | 指挥 | 指挥ID |
|---|---|---|
| ⇧↓ (Windows, Linux Shift+Down) | 列选下 | cursorColumnSelectDown |
| ⇧↑(Windows,Linux Shift+Up) | 列选取 | cursorColumnSelectUp |
| ⇧←(Windows,Linux Shift+Left) | 列选左 | 游标列选择左 |
| ⇧→(Windows,Linux Shift+Right) | 右栏选择 | cursorColumnSelectRight |
| ⇧PageDown(Windows,Linux Shift+PageDown) | 栏目 选择 向下 | 游标列选择页面下 |
| ⇧PageUp(Windows,Linux Shift+PageUp) | 栏目 选择 页面向上 | cursorColumnSelectPageUp |
你可以编辑你的keybindings.json如果你愿意,可以把他们绑定到更熟悉的东西上。
列选择模式
用户设置编辑器:列选择控制此功能。一旦进入该模式,如状态栏所示,鼠标手势和方向键默认会创建列选。该全局切换也可通过“选择>列选择模式”菜单项访问。此外,还可以从状态栏中禁用列选择模式。
保存/自动保存
默认情况下,VS Code 需要一个显式作来保存你的更改到磁盘,⌘S(Windows,Linux Ctrl+S)。
不过,开机很容易自动保存,这会在设置延迟或焦点离开编辑器后保存你的更改。开启此选项后,无需明确保存文件。最简单的开机方式自动保存是通过“文件>自动保存”开关,可以在延迟后开关保存。
为了更好地控制自动保存,打开用户或工作区设置,查找相关设置:
- files.autoSave: 可以有以下数值:
不对劲- 禁用自动保存。延迟之后- 在设置延迟(默认1000毫秒)后保存文件。在FocusChange频道- 当焦点从脏文件的编辑器移出时保存文件。在WindowChange- 当焦点移出 VS Code 窗口时保存文件。
- 文件.autoSaveDelay:将延迟配置为毫秒,当files.autoSave配置为
延迟之后.默认是1000毫秒。
如果你想自定义自动保存对于特定语言或文件类型,你可以从settings.json通过添加语言特定规则来提交文件。
例如,要禁用自动保存对于 LaTeX 文件:
"[latex]": {
"files.autoSave": "off",
},
热离场
默认情况下,VS Code会记住你退出时对文件的未保存更改。热退出会在应用程序通过文件>退出关闭(macOS上代码>退出)或最后一个窗口关闭时触发。
你可以通过设置热出口来配置
“关掉”:关闭热出口。“onExit”:热退出将在应用程序关闭时触发,即Windows/Linux的最后窗口关闭,或者当workbench.action.quit命令可通过命令面板、快捷键或菜单触发。所有未打开文件夹的窗口将在下次启动时恢复。“在离开并关闭窗户”:热退出将在应用程序关闭时触发,即Windows/Linux的最后窗口关闭,或者当workbench.action.quit命令可触发(从命令调色板、快捷键或菜单),任何打开文件夹的窗口也可触发,无论该窗口是否为最后一个窗口。所有未打开文件夹的窗口将在下次启动时恢复。要恢复关闭前的文件夹窗口,设置windows.restoreWindows到全部.
如果热退出出现问题,所有备份都会存储在以下标准安装位置的文件夹中:
- 窗户
%APPDATA%\Code\Backups - macOS
$HOME/库/应用支持/代码/备份 - Linux
$HOME/.config/Code/Backups
查找并替换
VS Code 允许你快速查找并替换当前打开文件中的文本。按⌘F(Windows,Linux Ctrl+F)打开编辑器中的查找控件并输入搜索字符串。搜索结果会在编辑器、概览标尺和小地图中高亮显示。
你一打字,VS Code 就会立刻开始搜索。要只在按下回车键时开始搜索,请清除
如果当前文件中有多个匹配,按回车进入下一个结果,或按⇧Enter(Windows,Linux Shift+Enter)进入上一个结果,同时查找输入框保持焦点。
默认情况下,VS Code 会保存你在工作区中查找和替换查询的历史,并在多次重启后恢复。你可以用
绝不关闭保存历史。
从选区中搜索种子字符串
当打开查找控件时,它会自动将编辑器中选中的文本填充到查找输入框中。如果选择为空,光标下方的单词将入输入框。

该功能可通过设置关闭
“永远不会”.
选择中发现
默认情况下,查找作会在编辑器中对整个文件进行。要将搜索限制在文本选择范围内,请在查找控制中选择“在选择中查找”图标,或按⌥⌘L(Windows,Linux Alt+L)。

如果你想让它成为查找控件的默认行为,可以设置
永远,或多线路如果你希望它只在多行内容被选中时对选中的文本运行。
高级查找与替换选项
对于更高级的场景,查找并替换控制有以下选项:
-
找到控制:
- 比赛案件
- 匹配全词
- 正则表达式
-
替换控制:
- 保留箱

多线支持与 Find 控制大小调整
你可以通过将文本粘贴到“查找输入框”和“替换输入框”来搜索多行文本。按Ctrl+回车键会在输入框中插入一行新行。

在搜索长文本时,查找控件的默认大小可能过小。你可以拖动左边的推拉来放大“查找”控件,或者双击左边的推移以最大化或缩小到默认大小。

跨文件搜索
VS Code 允许你快速搜索当前打开文件夹中的所有文件。按⇧⌘F(Windows,Linux Ctrl+Shift+F)并输入你的搜索词。搜索结果被分组成包含搜索词的文件,并标注每个文件中的命中结果及其位置。展开一个文件,预览该文件中所有的命中。然后单击其中一个结果,在编辑器中查看。

VS Code 还支持在搜索框中进行正则表达式搜索。
你可以通过右侧搜索框下方的省略号(切换搜索详情)来配置高级搜索选项(或按⇧⌘J(Windows,Linux Ctrl+Shift+J))。这会显示更多字段以配置搜索。
你可以使用快速搜索,快速查找当前打开文件夹中所有文件的文本。打开命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P)),输入“搜索:快速搜索”命令。
高级搜索选项

在搜索框下方的两个输入框中,你可以输入图案以包含或排除搜索。如果你进来示例,将匹配所有命名的文件夹和文件示例在工作区里。如果你进来./示例,这会与文件夹匹配示例/在你工作空间的顶层。用途,用来区分多个模式。路径必须使用前斩。你也可以使用球状模式语法,例如:
*匹配路径段中零个或多个字符?在路径段中匹配一个字符**匹配任意数量的路径段,包括无路径段{}将条件归类(例如){**/*.html,**/*.txt}匹配所有HTML和文本文件)[]以声明匹配的字符范围(举个例子。[0-9]匹配示例.0,示例.1, …)[!...]以消除匹配的字符范围(举个例子。[!0-9]匹配example.a,example.b,但又不是示例.0)
关于大小写敏感性的说明:球状模式遵循作系统的文件系统规则。在 Windows 和 macOS 上,图案不区分大小写(例如,*.CS比赛file.cs).在 Linux 上,模式是区分大小写的。这与搜索文本匹配大小写开关不同,后者控制搜索文本本身是否区分大小写。了解更多关于球状图案的信息。
VS Code 默认排除某些文件夹,以减少你不感兴趣的搜索结果数量(例如:node_modules).在
注意,搜索视图中的球状模式与以下设置不同
**/示例以匹配一个名为示例在子文件夹中folder1/示例在你的工作空间里。在搜索视图中,前缀是假定的。这些设置中的球状图案总是相对于工作区文件夹的路径进行评估。**
还要注意文件排除框里的“使用排除设置”和“忽略文件”切换按钮。开关决定是否排除被你忽略的文件.gitignore文件和/或匹配你的
模式.gitignore在Windows和macOS上,文件匹配方式为无大小写区分,在Linux上则为大小写区分。了解更多关于球状图案大小写敏感性的信息。
在资源管理器中,你可以右键点击某个文件夹,选择“在文件夹中查找”,只在该文件夹内搜索。
搜索与替换
你也可以在文件间搜索和替换。展开搜索小部件以显示替换文本框。

当你在替换文本框中输入文本时,你会看到一个待处理变更的差异显示。你可以在替换文本框中跨所有文件替换,或者在一个文件中替换所有文件,或者替换一个更改。

您可以通过↓(Windows,Linux 关闭)和↑(Windows,Linux Up)快速重用之前的搜索词,浏览搜索词历史。
正则表达式替换中的格变换
VS Code 支持在编辑器中或全局执行搜索和替换时更改正则表达式匹配组的案例。这是通过修饰符实现的\u\U\l\L, 其中\u以及\l会将单个字符大写或小写,并且\U以及\L会将匹配组的其他成员大写或小写。
示例:

修饰符也可以叠加——例如,\u\u$1将该组的前三个字符大写,或\l\U$1将第一个字符小写,其余字符大写。捕获群的引用为$n在替换字符串中,其中n是捕获群的阶数。
搜索编辑器
搜索编辑器允许你在全尺寸编辑器中查看工作区搜索结果,配备语法高亮和可选的周围上下文行。
以下是对“SearchEditor”一词的搜索,匹配前后各有两行文字以提供参考:

打开搜索编辑器命令用于打开已有的搜索编辑器(如果存在的话),或者以其他方式创建新的编辑器。新搜索编辑器命令总是会创建新的搜索编辑器。
在搜索编辑器中,结果可以通过“返回定义”作导航,例如按 F12 打开当前编辑器组中的源位置,或按 ⌘K F12(Windows,Linux Ctrl+K F12)打开编辑器中侧边的位置。此外,你还可以设置单击或双击搜索结果的行为,使用
你也可以使用搜索视图顶部的“打开新搜索编辑器”按钮,并可以通过搜索树顶部的“在编辑器中打开”链接,将现有结果从搜索视图复制到搜索编辑器,或者使用搜索编辑器:在编辑器中打开结果“命令。

上方的搜索编辑器通过在搜索视图顶部选择“打开新搜索编辑器”按钮(第三个按钮)来打开。
搜索编辑器命令和参数
search.action.open新编辑- 在新标签页中打开搜索编辑器。搜索.行动.openInEditor- 将当前搜索结果复制到新的搜索编辑器中。search.action.openNewEditorToSide- 在你当前打开的窗口旁边的新窗口中打开搜索编辑器。
你可以把两个参数传递给搜索编辑器的命令(search.action.open新编辑,search.action.openNewEditorToSide)以便通过快捷键配置新的搜索编辑器应如何作:
触发搜索- 打开搜索编辑器时是否会自动执行搜索。默认是真的。焦点结果- 是关注搜索结果还是查询输入。默认是真的。
例如,以下快捷键在打开搜索编辑器时执行搜索,但焦点仍保留在搜索查询控件中。
{
"key": "ctrl+o",
"command": "search.action.openNewEditor",
"args": { "query": "VS Code", "triggerSearch": true, "focusResults": false }
}
搜索编辑器上下文默认
该
重用上一次搜索编辑器配置
该
错误) 允许你在创建新搜索编辑器时重用上一次激活的搜索编辑器配置。
IntelliSense
我们始终提供单词补全服务,但对于丰富的语言,如JavaScript、JSON、HTML、CSS、SCSS、Less、C#和TypeScript,我们提供真正的IntelliSense体验。如果语言服务知道可能的完成性,IntelliSense 建议会在你输入时弹出。你总可以用 ⌃空格手动触发(Windows,Linux 的 Ctrl+Space)。默认情况下,Tab 或 Enter 是接受键盘的触发键,但你也可以自定义这些快捷键。
建议过滤支持 CamelCase,所以你可以在方法名中输入大写字母来限制建议。例如,“cra” 会很快弹出“createApplication”。
JavaScript 和 TypeScript 开发者可以利用 npmjs 类型声明(类型)文件库,获取 IntelliSense 用于常见的 JavaScript 库(Node.js、React、Angular)。你可以在 JavaScript 语言主题和 Node.js 教程中找到关于类型声明文件使用的好方法。
更多信息请参阅IntelliSense文档。
格式
VS Code 对源代码格式化支持非常好。编辑器有两个显式格式作:
- 格式化文档(⇧⌥F(Windows Shift+Alt+F,Linux Ctrl+Shift+I))——格式化整个活动文件。
- 格式选择(⌘K ⌘F(Windows,Linux Ctrl+K Ctrl+F))——格式化所选文本。
你可以在命令面板(Windows,Linux Ctrl+Shift+P 中为 ⇧⌘P))或编辑器的右键菜单中调用这些。
VS Code 默认有 JavaScript、TypeScript、JSON、HTML 和 CSS 的格式化工具。每种语言都有特定的格式选项(例如,
"html.format.enable": false
除了手动调用代码格式化外,您还可以根据用户作如输入、保存或粘贴来触发格式化。这些默认是关闭的,但你可以通过以下设置启用这些行为:
- editor.formatOnType- 输入后格式化行。
- editor.formatOnSave(编辑格式保存)- 在保存时格式化文件。
- editor.formatOnPaste- 格式化粘贴内容。
并非所有格式化器都支持粘贴格式化,因此必须支持格式化选集或文本范围。
除了默认格式化工具外,你还可以在市场中找到支持其他语言或格式工具的扩展。有一个Formatters分类方便你搜索和查找格式扩展。在扩展视图搜索框中,输入“formatters”或“category:formatters”,即可查看VS Code内筛选的扩展列表。
折叠
你可以用字槽上的折叠图标,在行号和行起始之间折叠源代码的部分区域。将鼠标移到排水沟上,点击以折叠和展开区域。使用Shift+点击折叠图标,可以折叠或展开该区域及其内部所有区域。

你也可以使用以下作:
- 折叠(⌥⌘[(Windows,Linux Ctrl+Shift+[))折叠光标处最内侧未折叠的区域。
- 展开(⌥⌘)(Windows,Linux Ctrl+Shift+]))展开光标处的折叠区域。
- 切换折叠(⌘K ⌘L(Windows,Linux Ctrl+K Ctrl+L))在光标处折叠或展开区域。
- 递归折叠(⌘K ⌘[(Windows,Linux Ctrl+K Ctrl+[))折叠光标最内侧未折叠的区域及其内的所有区域。
- 递归展开(⌘K ⌘](Windows,Linux Ctrl+K Ctrl+]))展开光标处的区域及其内的所有区域。
- Fold All(⌘K ⌘0(Windows,Linux Ctrl+K Ctrl+0))在编辑器中折叠所有区域。
- 展开全部(⌘K ⌘J(Windows,Linux Ctrl+K Ctrl+J))在编辑器中展开所有区域。
- Fold Level X(Windows,Linux Ctrl+K Ctrl+2,关卡2)可以折叠X关卡中所有区域,除了当前光标位置的区域。
- Fold 所有区块评论(⌘K ⌘/ (Windows,Linux Ctrl+K Ctrl+/))折叠所有以区块评论标记开头的区域。
折叠区域默认基于线的缩进来评估。折叠区域从一条线的缩进小于一个或多个后续线开始,当有一条线的缩进相同或更小时结束。
折叠区域也可以根据编辑器配置语言的语法标记计算。以下语言已经支持语法感知折叠:Markdown、HTML、CSS、LESS、SCSS 和 JSON。
如果你更愿意为上述一种(或全部)语言切换回基于缩进的折叠,可以使用:
"[html]": {
"editor.foldingStrategy": "indentation"
},
区域也可以由每种语言定义的标记来定义。以下语言目前有明确的标记:
| 语言 | 起始区域 | 终点区域 |
|---|---|---|
| 球棒 | ::#region或快速眼动 #region |
::#endregion或快速眼动 #endregion |
| C# | #region |
#endregion |
| C/C++ | #pragma 地区 |
#pragma 端区 |
| CSS/Less/SCSS | /*#region*/ |
/*#endregion*/ |
| 咖啡稿 | #region |
#endregion |
| F# | #region或(#_region) |
#endregion或(#_endregion) |
| Java | #region或<编辑折叠> |
#endregion或</编辑折叠> |
| 折扣 | <!-- #region——> |
<!-- #endregion——> |
| Perl5 | #region或=舱体 |
#endregion或=停 |
| PHP | #region |
#endregion |
| PowerShell | #region |
#endregion |
| Python | #region或# 地区 |
#endregion或# 终局地区 |
| TypeScript/JavaScript | #region |
#endregion |
| Visual Basic | #Region |
#End 地区 |
要折叠和展开,仅使用标记定义的区域:
- Fold 标记区域(⌘K ⌘8(Windows,Linux Ctrl+K Ctrl+8))折叠所有标记区域。
- 展开标记区域(⌘K ⌘9(Windows,Linux Ctrl+K Ctrl+9))展开所有标记区域。
折叠选择
命令“从选择创建手动折叠范围”(⌘K ⌘, (Windows, Linux Ctrl+K Ctrl+,))从当前选中的行创建折叠范围并折叠。这个范围称为手动折叠范围,叠加在折叠服务商计算的范围之上。
手动折叠范围可以通过命令“移除手动折叠范围”(⌘K ⌘)来移除。(Windows,Linux Ctrl+K Ctrl+。))。
手动折叠范围在没有编程语言支持折叠的情况下尤其有用。
缩进
VS Code 允许你控制文本缩进,以及是想用空格还是制表符。默认情况下,VS Code 插入空格,每个 Tab 键使用 4 个空格。如果你想使用其他默认设置,可以修改
"editor.insertSpaces": true,
"editor.tabSize": 4,
自动检测
VS Code 会分析你打开的文件,确定文档中使用的缩进。自动检测的缩进会覆盖你的默认缩进设置。检测到的设置显示在状态栏右侧:

你可以点击状态栏缩进显示,弹出一个包含缩进命令的下拉菜单,允许你更改打开文件的默认设置,或在制表符和空格之间转换。

VS Code 自动检测会检查 2、4、6 或 8 格的缩进。如果你的文件使用了不同的空格数,缩进可能无法正确检测。例如,如果你的惯例是缩进3个空格,你可能想关闭
"editor.detectIndentation": false,
"editor.tabSize": 3,
文件编码支持
通过使用

你可以在状态栏查看文件编码。

点击状态栏中的编码按钮,重新打开或保存使用不同编码的活跃文件。

然后选择一种编码方式。

过型模式
在1.96版本之前,VS Code只支持插入模式,即字符在光标位置插入,除非你安装了Vim键位扩展。
自1.96版本起,VS Code支持覆排模式,允许你覆盖已有字符,而无需在光标位置插入字符。默认情况下,覆版模式关闭。
要在插入模式和叠排模式之间切换,请在命令面板中运行切换叠排/插入模式命令,或按(⌥⌘O(Windows,Linux 插入))。当你进入过载模式时,会显示状态栏指示OVR.
你可以通过配置
使用该
比较文件
VS Code 支持多种方式比较当前文件或任意两个文件的内容。
当你在编辑器中打开一个活跃文件时,你有以下比较选项:
- 与工作区文件比较:在命令调色板中,选择“文件:与活动文件比较......”,然后选择另一个文件进行比较。
- 与剪贴板比较:在命令调色板中,选择文件:比较活动文件与剪贴板(⌘K C(Windows,Linux Ctrl+K C)),以比较当前文件与剪贴板内容。
- 与已保存的比较:在命令面板中,选择文件:比较活动文件与已保存(⌘K D(Windows,Linux Ctrl+K D)),将当前文件与最后保存的版本进行比较。
比较任意两个文件:
- 在资源管理器视图中右键点击一个文件,选择“选择”进行比较。然后右键点击第二个文件,选择“与已选中比较”。
- 要开始两个空编辑器窗口的比较,请选择命令调色板中的“文件:比较新的无标题文本文件”。
你可以用--差分可以比较两个文件。了解更多关于VS Code命令行界面的信息。
下一步
你已经讲过基本的用户界面——VS Code还有很多内容。继续阅读,了解:
- 入门视频 - 设置与基础 - 观看一个关于 VS Code 基础的教程。
- 用户/工作区设置——了解如何通过用户和工作区设置将 VS Code 配置到你的偏好中。
- 代码导航——查看和访问定义,以及更多内容。
- 集成终端——了解集成终端,用于在 VS Code 内快速执行命令行任务。
- IntelliSense - VS Code 带来了智能代码补全功能。
- 调试——这正是VS Code真正闪耀的地方。
常见问题
有可能进行全局搜索和替换吗?
是的,展开搜索视图文本框,加入替换文本字段。你可以在工作区中搜索并替换所有文件。注意,如果你没有在某个文件夹中打开VS Code,搜索只能在当前打开的文件上运行。

我该如何开启单词换行?
你可以通过
不对劲但如果你把它设置为关于,文本会在编辑器的视口宽度上展开。
"editor.wordWrap": "on"
你可以用 ⌥Z(Windows,Linux Alt+Z)切换 VS Code 会话的 Word Wrap。
你也可以在编辑器中添加垂直列标尺,使用
与其他编辑器一样,Cut和Copy等命令适用于整个被包裹的行。三重点击则选择整条包裹好的行。按两次主页键将光标移至行的最开头。按两次“结束”键,光标移动到行的最末端。
我怎样才能避免在文字换行中放置多余的光标?
如果你想忽略在当前选择上方或下方添加光标时的换行,可以直接跳过{ “logicalLine”: true }到args在键盘快捷键上按如下作:
{
"key": "shift+alt+down",
"command": "editor.action.insertCursorBelow",
"when": "textInputFocus",
"args": { "logicalLine": true },
},
{
"key": "shift+alt+up",
"command": "editor.action.insertCursorAbove",
"when": "textInputFocus",
"args": { "logicalLine": true },
},