Visual Studio Code 终端配置文件使用说明

我被代码海扁署名-非商业-禁演绎
阅读 16:52·字数 5064·发布 
Bilibili 空间
关注 960

本节所讲述的“终端配置文件”并非包含所有 Visual Studio Code 终端设置的文件。

Visual Studio Code 终端配置文件

Visual Studio Code 终端配置文件并非通过单独的文件存储,而是存在于 Visual Studio Code 设置文件settings.json的设置项terminal.integrated.profiles.<platform>中,其中platform为操作系统,可以是linuxwindowsosx,这使得开发人员能够针对不同的操作系统 Linux/Windows/macOS 来定制不同的 Visual Studio Code 终端

Visual Studio Code 设置项terminal.integrated.profiles.<platform>是一个对象,包含了用于对应操作系统的 Visual Studio Code 终端配置文件,对象的属性的名称为终端配置文件的名称,对象的属性的值(也是一个对象)为终端配置文件的内容。

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 A Shell
		"A Shell": {
			"path": "<外壳程序的路径信息>",
		},
	},
}

Visual Studio Code 内置终端配置文件

默认情况下,Visual Studio Code 工作区或用户设置文件settings.json可能并不包含设置项terminal.integrated.profiles.<platform>,但这并不影响 Visual Studio Code 终端的正常使用,因为 Visual Studio Code 可以自动识别当前系统中可用的命令行应用(外壳程序,shell),并拥有一些内置的终端配置文件。

新建 Visual Studio Code 终端配置文件

在启动某个新的命令行应用(外壳程序)时,如果 Visual Studio Code 未列出你所期望的命令行应用,那么可以在 Visual Studio Code 设置文件settings.json的设置项terminal.integrated.profiles.<platform>中添加新的属性(设置项)来表示新的终端配置文件,并将终端配置文件指向目标命令行应用。

Visual Studio Code 终端配置文件在设置文件settings.json中的表现形式同样是对象,该对象拥有以下两个重要的属性(设置项)。

path 属性

path可以是 Visual Studio Code 终端配置文件对应的命令行应用的路径或别名,你需要确保 Visual Studio Code 或操作系统能够根据path的值以及某些环境变量(比如PATH)找到目标命令行应用,否则,Visual Studio Code 可能不会在用户界面中列出该终端配置文件。

属性path也可以是一个包含多个指向命令行应用的路径或别名的数组,这些路径或别名将按照先后顺序用于查找目标命令行应用。

source 属性

如果未指定path,那么可以设置source属性,该属性仅在设置项terminal.integrated.profiles.windows中有效,并且仅有两个有效值PowerShellGit Bash,他们表示使用 Visual Studio Code 内置终端配置文件PowerShellGit Bash

虽然是使用 Visual Studio Code 内置终端配置文件,但你可以覆盖某些属性,比如,添加有效的path属性来指定目标命令行应用。

下面的终端配置文件New PS,将采用 Visual Studio Code 内置终端配置文件PowerShell,并改写其path属性为cmd

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 New PS
		"New PS": {
			// 采用内置的终端配置文件 PowerShell
			"source": "PowerShell",
			// 覆盖 path 属性,改为启动 Windows 命令提示符
			"path": "cmd",
		},
	},
}

为 Visual Studio Code 终端添加启动参数

通过 Visual Studio Code 终端配置文件的属性(设置项)args,你可以为 Visual Studio Code 终端所启动的命令行应用(外壳程序)添加启动参数,该属性是一个数组,每一个启动参数(名称)或参数值均对应了数组中的一个元素。

不支持将 Visual Studio Code 终端的启动参数的名称和值放入同一个字符串中

对于 Visual Studio Code 终端配置文件的args属性,不要将启动参数的名称和启动参数的值放在同一个字符串中,比如["-OutputFormat XML"],这可能导致 Visual Studio Code 终端无法正常启动命令行应用,正确的做法是将参数名称和参数值分开,比如["-OutputFormat","XML"]

虽然 Visual Studio Code 终端配置文件的args属性预期为数组,但将其设置为单一字符串也是可行的(在一定条件下),比如,"-OutputFormat XML"的效果可能与["-OutputFormat","XML"]相同。

下面的 Visual Studio Code 终端配置文件PS-parameters,为命令行应用 PowerShell 添加了启动参数-OutputFormat,其值为XML

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 PS-parameters
		"PS-parameters": {
			// 采用内置的终端配置文件 PowerShell
			"source": "PowerShell",
			// 为 PowerShell 添加启动参数
			"args": [
				// 启动参数 -OutputFormat,其值为 XML
				"-OutputFormat", "XML",
			],
		},
	},
}

管理 Visual Studio Code 终端中的环境变量

Visual Studio Code 终端配置文件的属性(设置项)env是一个对象,可用于管理 Visual Studio Code 终端所启动的命令行应用(外壳程序)中的环境变量,该对象的属性的名称是环境变量的名称,属性的值是环境变量的值。env属性中包含的环境变量将被添加至命令行应用,或覆盖命令行应用中的同名环境变量。如果你希望删除命令行应用中原有的某个环境变量,则应在env中将其对应的属性的值设置为null

可能需要重启 Visual Studio Code 使修改后的终端配置文件的 env 属性生效

如果你修改了 Visual Studio Code 终端配置文件的env属性,比如,为命令行应用添加了新的环境变量或覆盖了原有的环境变量,那么这些修改对于已经打开命令行应用是无效的,并且可能需要重启 Visual Studio Code 才能使这些修改生效。

命令行应用可能不会完全支持 Visual Studio Code 终端配置文件的 env 属性

需要指出的是,一些命令行应用可能无法完全支持通过 Visual Studio Code 终端配置文件的env属性来管理环境变量,比如,一些命令行可能不支持通过env来添加环境变量。

下面的 Visual Studio Code 终端配置文件CMD-variables,更改了环境变量OS并添加了环境变量OS_OTHER(可能需要重启 Visual Studio Code),启动该终端配置文件对应的命令提示符后,我们通过echo命令查看环境变量OS以及OS_OTHER

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 CMD-variables(可能需要重启 Visual Studio Code)
		"CMD-variables": {
			// 启动 Windows 命令提示符
			"path": "cmd",
			"env": {
				// 更改已有的环境变量 OS
				"OS": "Hello world!",
				// 添加新的环境变量 OS_OTHER
				"OS_OTHER": "Hello other worlds!",
			}
		},
	},
}
# 命令提示符
echo %OS%
Hello world!
echo %OS_OTHER%
Hello other worlds!

如何管理 Visual Studio Code 所有命令行应用中的环境变量?

通过 Visual Studio Code 设置项terminal.integrated.env.<platform>platformlinuxwindowsosx之一),你可以为指定操作系统中的所有命令行应用添加,删除或更改环境变量。其具体使用方法与 Visual Studio Code 终端配置文件的env属性类似,只不过,当terminal.integrated.env.<platform>env属性包含相同的环境变量时,以env属性为准。

虽然我们在 Visual Studio Code 设置项terminal.integrated.env.windows中删除了环境变量OS,但终端配置文件CMD-override重新添加了他,启动该终端配置文件对应的命令提示符后,可通过echo命令查看环境变量OS以及OS_OTHER

settings.json
{
	// 管理 Windows 中的命令行的环境变量
	"terminal.integrated.env.windows": {
		// 删除已有的环境变量 OS
		"OS": null,
		// 添加新的环境变量 OS_OTHER
		"OS_OTHER": "Other worlds!",
	},
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 CMD-override(可能需要重启 Visual Studio Code)
		"CMD-override": {
			// 启动 Windows 命令提示符
			"path": "cmd",
			"env": {
				// 重新添加已被删除的环境变量 OS
				"OS": "Hello world!",
			}
		},
	},
}
# 命令提示符
echo %OS%
Hello world!
echo %OS_OTHER%
Other worlds!

设置 Visual Studio Code 终端的名称,图标,颜色

通过 Visual Studio Code 终端配置文件的属性(设置项)iconcolor,可以设置 Visual Studio Code 终端所启动的命令行应用(外壳程序)的图标和图标的颜色。通过属性overrideName可以设置是否将 Visual Studio Code 终端所启动的命令行应用的标题更改为终端配置文件的名称,如果设置为true(默认为false),则标题为终端配置文件的名称。

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 终端配置文件 PS-customized
		"PS-customized": {
			// 采用内置的终端配置文件 PowerShell
			"source": "PowerShell",
			// 将命令行应用的标题替换为终端配置文件的名称 PS-customized
			"overrideName": true,
			// 设置终端的图标
			"icon": "calendar",
			// 设置终端的图标的颜色
			"color": "terminal.ansiGreen",
		},
	},
}

终端,外观和样式

你可以仅改变 Visual Studio Code 终端所启动的某个具体命令行应用的名称,图标和颜色,具体请查看更改 Visual Studio Code 终端的名称,图标,颜色一段,或通过 Visual Studio Code 设置项指定命令行应用的默认名称,说明,图标和图标颜色,具体请查看自定义 Visual Studio Code 终端选项卡的默认名称,说明,图标,颜色一段。

设置默认的 Visual Studio Code 终端配置文件

通过 Visual Studio Code 设置项terminal.integrated.defaultProfile.<platform>platformlinuxwindowsosx之一),你可以为某个操作系统中的 Visual Studio Code 指定默认的终端配置文件,通常这意味着指定 Visual Studio Code 终端默认启动的命令行应用(或不同的启动参数),该设置项的值可以是任意有效的 Visual Studio Code 终端配置文件的名称。

如果忽略 Visual Studio Code 设置项terminal.integrated.defaultProfile.<platform>,或将其设置为null,那么 Visual Studio Code 将尝试在 Windows 系统中使用命令行应用 PowerShell,在 Linux/macOS 系统中使用由环境变量SHELL(区分大小写)指定的命令行应用(外壳程序,shell)。

settings.json
{
	// 选择 PS-customized 作为默认的终端配置文件
	"terminal.integrated.defaultProfile.windows": "PS-customized",
}

此外,在 Visual Studio Code 的命令面板中输入并执行命令Terminal: Select Default Profile,或点击 Visual Studio Code 终端面板右上角的加号按钮旁边的箭头按钮,然后选择菜单项选择默认配置文件,同样可以设置默认的 Visual Studio Code 终端配置文件,这将修改 Visual Studio Code 用户设置文件。

由于工作区设置文件会覆盖用户设置文件中的设置项,因此,如果你在工作区设置文件中指定了 Visual Studio Code 默认终端配置文件,那么以上操作可能不会达到预期效果。

终端问题

设置用于自动化功能的 Visual Studio Code 终端配置文件

一般情况下,Visual Studio Code 的自动化功能(比如任务和调试功能)会使用默认的终端配置文件,并启动对应的命令行应用(外壳程序),你可以通过 Visual Studio Code 设置项terminal.integrated.automationProfile.<platform>platformwindowslinuxosx之一)为自动化功能指定其所使用的终端配置文件。

Visual Studio Code 设置项terminal.integrated.automationProfile.<platform>不是表示终端配置文件的名称的字符串,而是表示终端配置文件的内容的对象,该对象可包含属性pathargsenvoverrideNameiconcolor,但不包含属性source,需要说明的是,某些属性可能不会产生预期效果,比如iconcolor,他们可能无法改变命令行应用的图标和图标颜色。

settings.json
{
	// 为自动化功能设置终端配置文件
	"terminal.integrated.automationProfile.windows": {
		// 启动 Windows 命令提示符
		"path": "cmd",
		// 设置终端的图标的颜色(可能没有效果)
		"color": "terminal.ansiRed",
	},
}

移除 Visual Studio Code 终端配置文件

如果你希望移除某个 Visual Studio Code 终端配置文件,那么可以将其在设置项terminal.integrated.profiles.<platform>中对应的属性的值设置为null

在下面的示例中,我们移除了终端配置文件Command Prompt

settings.json
{
	// Windows 系统中的终端配置文件
	"terminal.integrated.profiles.windows": {
		// 移除终端配置文件 Command Prompt
		"Command Prompt": null,
	},
}

源码

settings.json·codebeatme/vscode·GitHub

讲解视频

如何将其他命令行应用/程序作为 Visual Studio Code 终端?如何添加新的 Visual Studio Code 终端配置文件·Bilibili
如何使用 Visual Studio Code 终端配置文件为终端启动的命令行应用/程序添加启动参数·Bilibili
如何使用 Visual Studio Code 设置文件和终端配置文件管理(添加,修改,删除)命令行应用中的环境变量·Bilibili
如何设置默认的 Visual Studio Code 终端,终端配置文件,命令行应用·Bilibili
如何移除不需要的 Visual Studio Code 终端,终端配置文件,命令行应用·Bilibili