命令行接口 (CLI)

Visual Studio Code 内置了强大的命令行接口,让您可以控制编辑器的启动方式。您可以通过命令行选项(开关)打开文件、安装扩展、更改显示语言以及输出诊断信息。

command line example

如果您想了解如何在 VS Code 内部运行命令行工具,请参阅 集成终端

命令行帮助

要获取 VS Code 命令行接口的概述,请打开终端或命令提示符并输入 code --help。您将看到版本号、使用示例和命令行选项列表。

command line help

从命令行启动

您可以从命令行启动 VS Code 以快速打开文件、文件夹或项目。通常,您是在文件夹的上下文中打开 VS Code。要执行此操作,请在打开的终端或命令提示符中,导航到您的项目文件夹并输入 code .

launch VS Code

注意

macOS 用户必须首先运行命令(Shell Command: Install 'code' command in PATH),将 VS Code 可执行文件添加到 PATH 环境变量中。请阅读 macOS 设置指南以获取帮助。

Windows 和 Linux 安装程序通常会自动将 VS Code 二进制文件路径添加到系统路径中。如果未添加,您可以手动将该路径添加到 Path 环境变量(Linux 上为 $PATH)。例如,在 Windows 上,默认的 VS Code 二进制文件路径是 AppData\Local\Programs\Microsoft VS Code\bin。如需查看特定平台的设置说明,请参阅 设置

注意

如果您使用的是 VS Code Insiders 预览版,请使用 code-insiders 来启动您的 Insiders 构建版本。

核心 CLI 选项

以下是通过命令行使用 code 启动 VS Code 时可以使用的可选参数

参数 描述
-h--help 打印用法
-v--version 打印 VS Code 版本(例如 1.22.2)、GitHub 提交 ID 和架构(例如 x64)。
-n--new-window 打开一个新的 VS Code 会话,而不是恢复之前的会话(默认行为)。
-r--reuse-window 强制在最近活动的窗口中打开文件或文件夹。
- 从标准输入 (stdin) 读取内容并在 VS Code 中打开(例如 'echo Hello World | code -')
-g--goto file:line{:character} 一起使用时,在指定的行号和可选的字符位置打开文件。提供此参数是因为某些操作系统允许在文件名中使用 :
-d--diff <file1> <file2> 打开文件差异对比编辑器。需要两个文件路径作为参数。
-m--merge <path1> <path2> <base> <result> 通过提供两个修改过的文件版本、它们的共同起源以及用于保存合并结果的输出文件路径,执行三向合并。
-w--wait 等待文件关闭后再返回。
--locale <locale> 为 VS Code 会话设置 显示语言(区域设置)。(例如 en-USzh-CN

launch with locale

打开文件和文件夹

有时您希望打开或创建文件。如果指定的文件不存在,VS Code 会连同任何新的中间文件夹一起为您创建它们。

code index.html style.css documentation\readme.md

对于文件和文件夹,您都可以使用绝对路径或相对路径。相对路径是相对于运行 code 命令的命令提示符的当前目录。

如果您在命令行中指定了多个文件,VS Code 将仅打开一个实例。

如果您在命令行中指定了多个文件夹,VS Code 将创建一个包含每个文件夹的 多根工作区 (Multi-root Workspace)

参数 描述
file 要打开的文件名。如果文件不存在,将创建该文件并将其标记为已编辑。您可以通过用空格分隔每个文件名来指定多个文件。
file:line[:character] -g 参数配合使用。要在指定的行号和可选的字符位置打开的文件名。
folder 要打开的文件夹名称。您可以指定多个文件夹,系统将创建一个新的 多根工作区
--skip-add-to-recently-opened 防止将打开的文件和文件夹添加到最近打开列表中。

go to line and column

选择配置文件

您可以通过 --profile 命令行接口选项使用特定的 配置文件 启动 VS Code。您可以在 --profile 参数后传入配置文件名称,并使用该配置文件打开文件夹或工作区。下方的命令将使用“Web Development”配置文件打开 web-sample 文件夹:

code ~/projects/web-sample --profile "Web Development"

如果指定的配置文件不存在,则会创建一个具有给定名称的新空配置文件。

使用扩展

您可以从命令行安装和管理 VS Code 扩展

参数 描述
--install-extension <extension-id> | <extension-vsix-path> 安装或更新扩展。请提供完整扩展名 publisher.extension 或 VSIX 文件的路径作为参数。要安装特定版本,请附加 @{version}。例如:vscode.csharp@1.2.3。使用 --force 参数可避免提示。使用 --profile 参数可为特定配置文件安装。
--uninstall-extension <extension-id> 卸载扩展。请提供完整扩展名 publisher.extension 作为参数。使用 --profile 参数可从特定配置文件中卸载。
--disable-extensions 禁用所有已安装的扩展。扩展在扩展视图的已禁用部分中仍然可见,但它们将不会被激活。
--list-extensions 列出已安装的扩展。可以使用 --profile 参数列出特定配置文件的扩展。
--show-versions 在使用 --list-extensions 时显示已安装扩展的版本。
--enable-proposed-api <ext> 为扩展启用建议的 API 功能。请提供完整扩展名 publisher.extension 作为参数。
--update-extensions 更新已安装的扩展并退出。

install extension

从命令行启动聊天

您可以使用 VS Code CLI 中的 chat 子命令直接从命令行启动聊天会话。这使您能够在当前工作目录中通过提供的提示语打开聊天会话。

例如,以下命令为当前目录打开聊天,并询问“查找并修复所有未定义类型的变量”

code chat Find and fix all untyped variables

chat 子命令具有以下命令行选项

  • -m, --mode <mode>:聊天会话使用的自定义代理。可用选项:ask, edit, agent 或自定义代理的标识符。默认为 agent
  • -a, --add-file <path>:将文件添加为聊天会话的上下文。
  • --maximize:最大化聊天会话视图。
  • -r, --reuse-window:在最近活动的窗口中使用聊天会话。
  • -n, --new-window:为聊天会话打开一个新窗口。

chat 子命令还支持通过在命令末尾传递 - 来从 stdin 管道输入。例如:

python app.py | code chat why does it fail -

高级 CLI 选项

有几个 CLI 选项有助于重现错误和进行高级设置。

参数 描述
--extensions-dir <dir> 设置扩展的根目录路径。
可移植模式 (Portable Mode) 下会被 data 文件夹覆盖。
--user-data-dir <dir> 指定存放用户数据的目录。可用于运行多个隔离的 VS Code 实例,并拥有独立的环境、设置和扩展。在以 root 身份运行时也非常有用。
可移植模式 (Portable Mode) 下会被 data 文件夹覆盖。
-s, --status 打印进程使用情况和诊断信息。
-p, --performance 以启用 Developer: Startup Performance 命令的状态启动。
--disable-gpu 禁用 GPU 硬件加速。
--verbose 打印详细输出(隐含 --wait)。
--prof-startup 在启动期间运行 CPU 分析器。
--upload-logs 将当前会话的日志上传到安全终端节点。
--remote <authority> 连接到远程开发环境。authority 指定了 WSL (wsl+<distro name> <path in WSL>) 或 SSH (ssh-remote+<remote_server> <path on remote>) 的远程连接。
多根工作区
--add <dir> 将文件夹添加到最近活动的窗口中,以形成多根工作区。
--remove <dir> 从最近活动的窗口中移除多根工作区的文件夹。

隔离 VS Code 实例

默认情况下,VS Code 实例按以下方式共享环境变量

  • 如果是第一个 VS Code 实例,环境变量从父进程继承。
  • 如果不是第一个 VS Code 实例,环境变量从已经运行的 VS Code 实例继承。

当您需要为不同项目或构建配置使用不同的环境变量时,此行为可能会导致问题。例如,如果您正在处理两个需要不同 Node.js 版本或不同 PATH 设置的项目。

要使用不同的环境变量运行 VS Code 实例,请使用 --user-data-dir 选项为每个实例指定唯一的用户数据目录。

# First instance with its own environment
code ~/project1 --user-data-dir ~/vscode-data-project1

# Second instance with different environment
code ~/project2 --user-data-dir ~/vscode-data-project2

每个具有不同 --user-data-dir 的实例将维护其自己的:

  • 环境变量
  • 设置和首选项
  • 已安装的扩展
  • UI 状态和布局
注意

使用 --user-data-dir 时,您需要为每个用户数据目录重新安装扩展,因为扩展是分开存储的。

创建远程隧道

VS Code 与其他 远程环境 集成,变得更加强大和灵活。我们的目标是提供一种统一的体验,让您能够从一个统一的 CLI 管理本地和远程机器。

Visual Studio Code Remote - Tunnels 扩展允许您通过安全隧道连接到远程机器(如台式机或虚拟机)。隧道可以安全地在网络之间传输数据。这样,您就可以从任何地方安全地连接到该机器,而无需 SSH。

我们在 code CLI 中内置了功能,可以在远程机器上启动隧道。您可以运行:

code tunnel

来在您的远程机器上创建隧道。您可以通过 Web 或桌面版 VS Code 客户端连接到此机器。

您可以通过运行 code tunnel -help 查看其他隧道命令。

Output of tunnel help CLI command

由于您可能需要在无法安装 VS Code Desktop 的远程机器上运行 CLI,因此该 CLI 也可在 VS Code 下载页面 上作为独立安装包获取。

有关远程隧道的更多信息,请查阅 远程隧道文档

使用 URL 打开 VS Code

您还可以使用平台的 URL 处理机制来打开项目和文件。使用以下 URL 格式:

打开项目

vscode://file/{full path to project}/

vscode://file/c:/myProject/

打开文件

vscode://file/{full path to file}

vscode://file/c:/myProject/package.json

打开文件并跳转到特定行列

vscode://file/{full path to file}:line:column

vscode://file/c:/myProject/package.json:5:10

打开设置编辑器

vscode://settings/setting.name

vscode://settings/editor.wordWrap

您可以在浏览器或文件资源管理器等能够解析和重定向 URL 的应用程序中使用这些 URL。例如,在 Windows 上,您可以将 vscode:// URL 直接传递给 Windows 资源管理器或在命令行中执行 start vscode://{full path to file}

vscode url in Windows Explorer

注意

如果您使用的是 VS Code Insiders 构建版本,URL 前缀应为 vscode-insiders://

后续步骤

继续阅读以了解:

  • 集成终端 - 在 VS Code 内部运行命令行工具。
  • 基础编辑 - 学习 VS Code 编辑器的基础知识。
  • 代码导航 - VS Code 让您能够快速理解并在源代码中移动。

常见问题

'code' 不是内部或外部命令

您的操作系统无法在其路径中找到 VS Code 二进制文件 code。VS Code 的 Windows 和 Linux 安装程序通常会自动将 VS Code 添加到您的路径中。尝试卸载并重新安装 VS Code。如果仍然找不到 code,请查阅针对 WindowsLinux 的特定平台设置主题。

在 macOS 上,您需要手动运行 Shell Command: Install 'code' command in PATH 命令(可通过命令面板 (Command Palette) ⇧⌘P (Windows, Linux Ctrl+Shift+P) 访问)。有关详细信息,请参阅 macOS 特定设置主题。

如何从 VS Code 内部访问命令行(终端)?

VS Code 有一个 集成终端,您可以在其中运行命令行工具。

我能指定 VS Code 的设置位置以实现便携式版本吗?

无法直接通过命令行实现,但 VS Code 有一个 可移植模式 (Portable Mode),它允许您将设置和数据保存在与安装目录相同的位置,例如在 U 盘上。

如何检测 shell 是否由 VS Code 启动?

当 VS Code 启动时,它可能会启动一个 shell 以加载“shell 环境”来帮助设置工具。这会启动一个交互式登录 (interactive login) shell 并获取其环境。根据您的 shell 设置,这可能会导致问题。例如,shell 被作为交互式会话启动可能是意料之外的,但这是 VS Code 为了使 $PATH 与用户创建的终端中的精确值对齐所必需的。

每当 VS Code 启动此初始 shell 时,它都会将变量 VSCODE_RESOLVING_ENVIRONMENT 设置为 1。如果您的 shell 或用户脚本需要知道它们是否是在此 shell 的上下文中运行,您可以检查 VSCODE_RESOLVING_ENVIRONMENT 的值。

© . This site is unofficial and not affiliated with Microsoft.