이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

변수 참조

디버깅작업 구성 파일에서 Visual Studio Code는 변수 치환을 지원하며, 일부 선택된 설정에서도 지원됩니다. 변수 치환은 launch.jsontasks.json 파일의 특정 키와 값 문자열 내에서 ${variableName} 구문을 사용하여 지원됩니다.

미리 정의된 변수

다음 미리 정의된 변수가 지원됩니다.

변수 설명
${userHome} 사용자 홈 폴더의 경로
${workspaceFolder} VS Code에서 열린 폴더의 경로
${workspaceFolderBasename} VS Code에서 열린 폴더의 이름 (슬래시 없음)
${file} 현재 열린 파일
${fileWorkspaceFolder} 현재 열린 파일의 작업 공간 폴더
${relativeFile} workspaceFolder에 상대적인 현재 열린 파일
${relativeFileDirname} workspaceFolder에 상대적인 현재 열린 파일의 dirname
${fileBasename} 현재 열린 파일의 basename
${fileBasenameNoExtension} 확장자가 없는 현재 열린 파일의 basename
${fileExtname} 현재 열린 파일의 확장자
${fileDirname} 현재 열린 파일의 폴더 경로
${fileDirnameBasename} 현재 열린 파일의 폴더 이름
${cwd} VS Code 시작 시 작업 실행기의 현재 작업 디렉토리
${lineNumber} 활성 파일에서 현재 선택된 줄 번호
${columnNumber} 활성 파일에서 현재 선택된 열 번호
${selectedText} 활성 파일에서 현재 선택된 텍스트
${execPath} 실행 중인 VS Code 실행 파일의 경로
${defaultBuildTask} 기본 빌드 작업의 이름
${pathSeparator} 운영 체제에서 파일 경로의 구성 요소를 구분하는 데 사용되는 문자
${/} ${pathSeparator}의 바로가기

미리 정의된 변수 예제

다음 조건을 가정합니다.

  1. 편집기에 열려 있는 /home/your-username/your-project/folder/file.ext에 있는 파일;
  2. /home/your-username/your-project 디렉토리가 루트 작업 공간으로 열려 있습니다.

이를 통해 각 변수에 대한 다음 값이 제공됩니다.

  • ${userHome}: /home/your-username
  • ${workspaceFolder}: /home/your-username/your-project
  • ${workspaceFolderBasename}: your-project
  • ${file}: /home/your-username/your-project/folder/file.ext
  • ${fileWorkspaceFolder}: /home/your-username/your-project
  • ${relativeFile}: folder/file.ext
  • ${relativeFileDirname}: folder
  • ${fileBasename}: file.ext
  • ${fileBasenameNoExtension}: file
  • ${fileExtname}: .ext
  • ${fileDirname}: /home/your-username/your-project/folder
  • ${fileDirnameBasename}: folder
  • ${lineNumber}: 커서의 줄 번호
  • ${columnNumber}: 커서의 열 번호
  • ${selectedText}: 코드 편집기에서 선택된 텍스트
  • ${execPath}: Code.exe의 위치
  • ${pathSeparator}: macOS 또는 Linux의 경우 /, Windows의 경우 \

tasks.jsonlaunch.json의 문자열 값 내에서 IntelliSense를 사용하여 미리 정의된 변수의 전체 목록을 가져오세요.

폴더별로 범위가 지정된 변수

변수에 루트 폴더의 이름을 추가(콜론으로 구분)하면 작업 공간의 형제 루트 폴더에 접근할 수 있습니다. 루트 폴더 이름이 없으면 변수는 사용되는 동일한 폴더로 범위가 지정됩니다.

예를 들어, ServerClient 폴더가 있는 다중 루트 작업 공간에서 ${workspaceFolder:Client}Client 루트의 경로를 참조합니다.

환경 변수

${env:Name} 구문을 사용하여 환경 변수를 참조할 수 있습니다. 예를 들어, ${env:USERNAME}USERNAME 환경 변수를 참조합니다.

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}

구성 변수

VS Code 설정(구성)을 참조하려면 ${config:Name} 구문을 사용합니다. 예를 들어, ${config:editor.fontSize}editor.fontSize 설정을 참조합니다.

명령 변수

${command:commandID} 구문을 사용하여 VS Code 명령을 변수로 사용할 수 있습니다.

명령 변수는 명령 평가의 (문자열) 결과로 대체됩니다. 명령의 구현은 UI가 없는 간단한 계산부터 VS Code 확장 API를 통해 사용 가능한 UI 기능에 기반한 정교한 기능까지 다양할 수 있습니다. 명령이 문자열 외의 것을 반환하면 변수 대체가 완료되지 않습니다. 명령 변수는 반드시 문자열을 반환해야 합니다.

이 기능의 한 예는 VS Code의 Node.js 디버거 확장으로, 실행 중인 모든 Node.js 프로세스 목록에서 단일 프로세스를 선택하기 위한 대화형 명령 extension.pickNodeProcess를 제공합니다. 이 명령은 선택된 프로세스의 프로세스 ID를 반환합니다. 이렇게 하면 프로세스 ID로 연결이라는 시작 구성에서 extension.pickNodeProcess 명령을 다음과 같이 사용할 수 있습니다.

{
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach by Process ID",
      "processId": "${command:extension.pickNodeProcess}"
    }
  ]
}

launch.json 구성에서 명령 변수를 사용할 때, 포함된 launch.json 구성은 인수로 명령에 객체로 전달됩니다. 이를 통해 명령은 호출될 때 특정 launch.json 구성의 컨텍스트와 매개변수를 알 수 있습니다.

입력 변수

명령 변수는 이미 강력하지만 특정 사용 사례에 대해 실행 중인 명령을 구성하는 메커니즘이 부족합니다. 예를 들어, 일반 "사용자 입력 프롬프트"에 프롬프트 메시지 또는 기본값을 전달할 수 없습니다.

이 제한 사항은 입력 변수로 해결되며, 구문은 ${input:variableID}입니다. variableIDlaunch.jsontasks.jsoninputs 섹션에 있는 항목을 참조하며, 추가 구성 특성이 지정됩니다. 입력 변수 중첩은 지원되지 않습니다.

다음 예제는 입력 변수를 사용하는 tasks.json의 전체 구조를 보여줍니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "task name",
      "command": "${input:variableID}"
      // ...
    }
  ],
  "inputs": [
    {
      "id": "variableID",
      "type": "type of input variable"
      // type specific configuration attributes
    }
  ]
}

현재 VS Code는 세 가지 유형의 입력 변수를 지원합니다.

  • promptString: 사용자로부터 문자열을 받기 위한 입력 상자를 표시합니다.
  • pickString: 여러 옵션에서 사용자가 선택할 수 있도록 빠른 선택 드롭다운을 표시합니다.
  • command: 임의의 명령을 실행합니다.

각 유형에는 추가 구성 특성이 필요합니다.

promptString:

  • description: 빠른 입력에 표시되며 입력에 대한 컨텍스트를 제공합니다.
  • default: 사용자가 다른 값을 입력하지 않으면 사용될 기본값입니다.
  • password: 입력된 값이 표시되지 않는 암호 프롬프트로 입력하려면 true로 설정합니다.

pickString:

  • description: 빠른 선택에 표시되며 입력에 대한 컨텍스트를 제공합니다.
  • options: 사용자가 선택할 수 있는 옵션 배열입니다.
  • default: 사용자가 다른 값을 입력하지 않으면 사용될 기본값입니다. 옵션 값 중 하나여야 합니다.

옵션은 문자열 값 또는 레이블과 값 모두를 가진 객체일 수 있습니다. 드롭다운에는 label: value가 표시됩니다.

command:

  • command: 변수 보간 시 명령을 실행합니다.
  • args: 명령 구현에 전달되는 선택적 옵션 가방입니다.

아래는 inputs를 사용하는 Angular CLI를 설명하는 tasks.json 예제입니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "ng g",
      "type": "shell",
      "command": "ng",
      "args": ["g", "${input:componentType}", "${input:componentName}"]
    }
  ],
  "inputs": [
    {
      "type": "pickString",
      "id": "componentType",
      "description": "What type of component do you want to create?",
      "options": [
        "component",
        "directive",
        "pipe",
        "service",
        "class",
        "guard",
        "interface",
        "enum"
      ],
      "default": "component"
    },
    {
      "type": "promptString",
      "id": "componentName",
      "description": "Name your component.",
      "default": "my-new-component"
    }
  ]
}

예제 실행

Inputs Example

다음 예제는 특정 폴더에서 찾은 모든 테스트 케이스 목록에서 사용자가 테스트 케이스를 선택할 수 있도록 하는 디버그 구성에서 command 유형의 사용자 입력 변수를 사용하는 방법을 보여줍니다. 일부 확장이 구성 가능한 위치에서 모든 테스트 케이스를 찾고 선택 UI를 표시하는 extension.mochaSupport.testPicker 명령을 제공한다고 가정합니다. 명령 입력의 인수는 명령 자체에 의해 정의됩니다.

{
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Run specific test",
      "program": "${workspaceFolder}/${input:pickTest}"
    }
  ],
  "inputs": [
    {
      "id": "pickTest",
      "type": "command",
      "command": "extension.mochaSupport.testPicker",
      "args": {
        "testFolder": "/out/tests"
      }
    }
  ]
}

명령 입력은 작업과 함께 사용할 수도 있습니다. 이 예제에서는 기본 제공 종료 작업 명령을 사용합니다. 모든 작업을 종료하는 인수를 허용할 수 있습니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Terminate All Tasks",
      "command": "echo ${input:terminate}",
      "type": "shell",
      "problemMatcher": []
    }
  ],
  "inputs": [
    {
      "id": "terminate",
      "type": "command",
      "command": "workbench.action.tasks.terminate",
      "args": "terminateAll"
    }
  ]
}

자주 묻는 질문

디버그 구성 또는 작업에서 변수 치환 세부 정보

디버그 구성 또는 작업에서 변수 치환은 두 단계 프로세스입니다.

  • 첫 번째 단계에서는 모든 변수가 문자열 결과로 평가됩니다. 변수가 두 번 이상 나타나면 한 번만 평가됩니다.
  • 두 번째 단계에서는 모든 변수가 첫 번째 단계의 결과로 대체됩니다.

이로 인해 변수(예: 확장 프로그램에서 구현된 명령 기반 변수)의 평가에는 디버그 구성 또는 작업의 다른 치환된 변수에 **액세스할 수 없습니다**. 원래 변수만 볼 수 있습니다. 이는 변수가 서로 의존할 수 없다는 것을 의미합니다(이는 격리를 보장하고 평가 순서에 대한 치환을 강력하게 만듭니다).

사용자 및 작업 공간 설정에서 변수 치환이 지원됩니까?

미리 정의된 변수는 터미널 cwd, env, shellshellArgs 값과 같은 settings.json 파일의 선택된 설정 키에서 지원됩니다. window.title과 같은 일부 설정에는 자체 변수가 있습니다.

  "window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${appName}"

설정 편집기의 주석(⌘, (Windows, Linux Ctrl+,))을 참조하여 설정별 변수에 대해 알아보세요.

${workspaceRoot}가 문서화되지 않은 이유는 무엇인가요?

${workspaceRoot} 변수는 다중 루트 작업 공간 지원과 더 잘 일치시키기 위해 ${workspaceFolder}로 대체되었습니다.

tasks.json의 변수가 확인되지 않는 이유는 무엇인가요?

tasks.json의 모든 값이 변수 치환을 지원하는 것은 아닙니다. 특히 command, argsoptions만 변수 치환을 지원합니다. inputs 섹션의 입력 변수는 입력 변수 중첩이 지원되지 않으므로 확인되지 않습니다.

변수의 실제 값을 어떻게 알 수 있나요?

변수의 런타임 값을 확인하는 쉬운 방법은 VS Code 작업을 만들어 변수 값을 콘솔에 출력하는 것입니다. 예를 들어 ${workspaceFolder}의 확인된 값을 보려면 tasks.json에서 다음의 간단한 'echo' 작업을 만들어 실행(터미널 > 작업 실행)할 수 있습니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "echo",
      "type": "shell",
      "command": "echo ${workspaceFolder}"
    }
  ]
}
© . This site is unofficial and not affiliated with Microsoft.