VS Code 调试提示输入参数并设置工作目录

VS Code debugging prompting for arguments and also setting the working directory

我知道如何在 launch.json 中传递固定参数,例如。我真正需要的是一个提示,我可以在其中为发生变化的参数赋值。

此外,我的论点是一个(数据)目录,其中有一个非常丑陋的长绝对路径。我真的很想能够将工作目录设置为包含我的每个单独数据目录的路径,因此我只需要提供一个相对目录路径,即只是目录名称。

我正在使用 Python,在 Windows(不是我的选择)上使用 VS Code 1.55.2(也不是我的选择)。

您可以使用input variables

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File with arguments",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "args": [
        "--dir",
        "/some/fixed/dir/${input:enterDir}"
      ]
    }
  ],
  "inputs": [
    {
      "id": "enterDir",
      "type": "promptString",
      "description": "Subdirectory to process",
      "default": "data-0034"
    }
  ]
}

您可以将 ${input:enterDir} 放在任务 "configurations" 的任何字符串中,例如 "cwd" 属性.

如果您想从列表中选择一个目录,因为它是动态的,您可以使用具有命令 pickFile

的扩展 Command Variable

命令变量 v1.36.0 支持 fixed 文件夹规范。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File with arguments",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "args": [
        "--dir",
        "${input:pickDir}"
      ]
    }
  ],
  "inputs": [
    {
      "id": "pickDir",
      "type": "command",
      "command": "extension.commandvariable.file.pickFile",
      "args": {
        "include": "**/*",
        "display": "fileName",
        "description": "Subdirectory to process",
        "showDirs": true,
        "fromFolder": { "fixed": "/some/fixed/dir" }
      }
    }
  ]
}

在类似 Unix 的系统上,您可以将文件夹包含在 include glob 模式中。在 Windows 上,您必须使用 fromFolder 将目录路径转换为可用的 glob 模式。如果您有多个文件夹,您可以使用 predefined 属性.