一、引言
vscode中使用task.jsons配置任务,配置文件是json格式,为了方便配置,vscode支持一些预定义的变量使用,这些变量用于匹配时指定相关工作环境。
二、vscode常用的预定义变量介绍
常用的预定义变量及含义如下:
- ${workspaceFolder}:工作区文件夹的绝对路径,就是通过vscode’打开的项目文件夹的绝对路径名
- ${workspaceFolderBasename}:工作区文件夹的基本名称,是去掉上层文件路径只保留项目文件夹名
- ${file}:在vscode中当前打开正在显示或编辑的文件的绝对路径文件名
- ${relativeFile}:当前打开文件相对于工作区文件夹的相对路径名
- ${fileBasename}:当前打开文件的基本名称,不含路径名,但包含文件扩展名,在文件就存放在工作文件夹下时,与${relativeFile}内容一致,如果存放在打开文件夹下的子文件夹时,则二者不一致
- ${fileBasenameNoExtension}:当前打开文件的基本名称,不包括扩展名
- ${fileDirname}:当前打开文件所在的目录路径
- ${fileExtname}:当前打开文件的扩展名
- ${cwd}:启动 VS Code 的工作目录
三、使用tasks.json输出预定义变量
可以配置一个任务来显示当前预定义变量的值,下面是老猿在国产统信操作系统UOS下配置的一个任务,该任务用于显示上述预定义变量在当前项目中的值:
{
"version": "2.0.0",
"tasks": [
{
"label": "echovariable",
"type": "shell",
"command": "echo \"vscode当前相关变量值如下:\r\n workspaceFolder=${workspaceFolder}\r\n workspaceFolderBasename=${workspaceFolderBasename}\r\n file=${file}\r\n relativeFile=${relativeFile} \r\n fileBasename=${fileBasename} \r\n fileBasenameNoExtension=${fileBasenameNoExtension}\r\n fileDirname=${fileDirname} \r\n fileExtname=${fileExtname} \r\n cwd=${cwd}\r\n 相关变量内容如上。\r\n\" ",
"problemMatcher": [],
"group":
{
"kind": "none",
"isDefault": true
},
"detail": "用shell显示vscode变量值"
}
]
}
上述任务就是利用shell来显示相关变量的值,配置后,在终端菜单中选择运行任务,如图:
然后在任务列表中选择echovariable任务,如图:
注意可能该任务在任务列表的比较靠后的位置。
上述任务执行后,在终端界面输出信息如下:
这个执行任务是在打开的文件为tasks.json文件时的输出。
四、使用案例
从上面配置的任务案例的输出,如果vscode当前打开的为hello.cpp文件,其文件目录为/home/administrator/test
,则对应的相关预定义变量的值分别为:
workspaceFolder=/home/administrator/test
workspaceFolderBasename=test
file=/home/administrator/test/hello.cpp
relativeFile=hello.cpp
fileBasename=hello.cpp
fileBasenameNoExtension=hello
fileDirname=/home/administrator/test
fileExtname=.cpp
cwd=/home/administrator/test
四、小结
vscode的预定义变量有助于配置tasks.json支持灵活的环境,本文介绍了vscode中tasks.json文件常用的预定义变量及含义,并在博文中老猿介绍了国产统信操作系统UOS下,如何配置一个tasks.json任务来输出相关变量,有助于大家理解这些变量的用途。