Task 출력을 전용 Terminal로 정리하기
presentation 설정으로 빌드와 테스트 출력을 서로 다른 Terminal에 격리하고, 같은 Task를 다시 실행할 때 자기 Terminal만 깨끗하게 재사용합니다.
이번 편의 핵심
빌드와 테스트 출력이 서로 다른 전용 Terminal에 나타나고, 빌드를 다시 실행해도 Terminal 수가 늘지 않으며 이전 빌드 출력만 지워지면 완료입니다.
기본값인 panel: "shared"에서는 여러 Task 결과가 한 Terminal에 이어질 수 있어, 지금 보고 있는 출력이 어느 Task의 결과인지 구분하기 어렵습니다.
1. 시작하기 전에
난이도는 초급입니다. 기존 Task 파일을 건드리지 않는 빈 연습 폴더에서 네 가지 presentation 속성을 추가하고 눈으로 결과를 비교합니다.
준비할 것
- Windows 11의 빈 연습 폴더
task-panel-demo— Explorer 최상위에 이 폴더만 보이는지 확인 - VS Code Stable 1.132.0 x64 — Help > About 또는 PowerShell의
code --version으로 확인 - PowerShell 자동화 Shell — 새 Integrated Terminal의 탭에 PowerShell이 표시되는지 확인
- 현재 Workspace의
.vscode/tasks.json— 경로가 연습 폴더 아래인지 확인
적용 환경 2026-08-08 KST · Windows 11 · VS Code Stable 1.132.0 x64 · PowerShell · Workspace 범위 tasks.json
tasks.json이 있으면 중단하고 새 빈 연습 폴더를 사용하세요. 예제 명령은 화면 출력만 하며 파일 삭제·설치·권한 상승·네트워크 전송을 하지 않습니다. 보호 대상: 실제 프로젝트의 Task와 소스 파일. Human Gate: 저장 전 경로와 명령을 직접 읽습니다. 중단 조건: 예제에 없는 삭제·다운로드·설치·관리자 권한 명령이 보이거나 현재 폴더가 실제 프로젝트라면 실행하지 않습니다. 되돌리기: 저장하지 않고 파일을 닫거나 연습 폴더의 .vscode만 휴지통으로 이동합니다.2. 알아둘 핵심 개념
FACT · presentation
Task가 사용하는 Integrated Terminal의 표시 방식을 정하는 객체입니다. 이번 실습에서는 reveal, panel, group, clear만 사용합니다.
FACT · panel — 문자열
shared는 여러 Task가 Terminal을 공유하고, dedicated는 같은 Task만 자기 Terminal을 재사용하며, new는 매 실행마다 새 Terminal을 만듭니다. 기본값은 shared입니다.
FACT · reveal — 문자열
always는 실행할 때 Terminal을 항상 앞으로 가져오며 기본값입니다. never는 사용자가 직접 Terminal을 열 때까지 앞으로 가져오지 않습니다. silent는 단순히 “항상 숨김”이 아니며, 출력이 오류·경고로 스캔되는지에 따라 표시가 달라집니다.
FACT · clear — 불리언
true이면 Task 실행 전에 해당 Terminal을 지웁니다. 기본값은 false이며 문자열 "true"가 아니라 따옴표 없는 불리언을 사용합니다.
FACT · group — 문자열
같은 문자열을 지정한 Task들을 같은 Terminal 그룹의 분할 창으로 표시합니다. group은 화면 배치를 정하고, panel: "dedicated"는 Task별 Terminal 재사용 범위를 정하므로 역할이 다릅니다.
3. 순서대로 진행하기
PROCEDURE · 각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.
1. 빈 연습 Workspace 열기
목적 실제 프로젝트의 설정과 파일을 보호합니다.
- Windows에서 빈
task-panel-demo폴더를 만든 뒤 VS Code의 File > Open Folder...로 그 폴더만 엽니다.
입력 위치 Windows File Explorer와 VS Code 메뉴
Artifact 비어 있는 task-panel-demo Workspace
정상 결과 VS Code Explorer 최상위에 연습 폴더 하나만 보이고 실제 프로젝트 파일은 없습니다.
확인 Explorer와 창 제목에서 현재 폴더 이름을 각각 확인합니다.
실패 신호 실제 소스, 기존 .vscode, Git 변경 표시가 보입니다.
2. Workspace Task 파일 만들기
목적 현재 연습 폴더에만 적용되는 Task 설정 파일을 준비합니다.
- Ctrl+Shift+P로 Command Palette를 열고 Tasks: Configure Task를 실행한 뒤 Create tasks.json file from template과 Others를 차례로 선택합니다.
입력 위치 Command Palette
Artifact task-panel-demo\.vscode\tasks.json
정상 결과 Editor에 현재 Workspace의 .vscode/tasks.json이 열립니다.
확인 Explorer에서 파일이 연습 폴더 바로 아래의 .vscode에 있는지 확인합니다.
실패 신호 User Tasks나 다른 Workspace의 파일이 열립니다.
3. 빌드와 테스트 Task 저장하기
목적 Task마다 전용 Terminal을 주고 같은 그룹의 분할 창에 배치합니다.
- 저장 전 파일 경로와 아래 두
powershell.exe명령을 직접 확인한 다음tasks.json전체를 EXAMPLE로 바꾸고 저장합니다.
입력 위치 task-panel-demo\.vscode\tasks.json
Artifact JSON 객체. presentation.reveal·panel·group은 문자열, clear는 불리언이며 Workspace 범위에 적용됩니다. 각 프로세스는 Workspace 루트에서 실행됩니다.
{
"version": "2.0.0",
"tasks": [
{
"label": "패널 확인: 빌드",
"type": "process",
"command": "powershell.exe",
"args": [
"-NoProfile",
"-Command",
"Write-Output 'BUILD task output'"
],
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated",
"group": "panel-demo",
"clear": true
}
},
{
"label": "패널 확인: 테스트",
"type": "process",
"command": "powershell.exe",
"args": [
"-NoProfile",
"-Command",
"Write-Output 'TEST task output'"
],
"problemMatcher": [],
"presentation": {
"reveal": "always",
"panel": "dedicated",
"group": "panel-demo",
"clear": true
}
}
]
}
정상 결과 빨간 JSON 오류 표시가 없고 두 Task가 Command Palette의 Task 목록에 나타납니다.
확인 두 Task의 panel이 dedicated이고 group 문자열이 모두 panel-demo인지 비교합니다.
실패 신호 괄호·쉼표 오류, 알 수 없는 속성, powershell.exe를 찾을 수 없다는 표시가 보입니다.
command와 args만 바꾸고, 먼저 그 명령의 파일 변경·권한·외부 전송 영향을 별도로 검토하세요. 되돌리기: 저장 취소 또는 Ctrl+Z로 이전 내용으로 돌아간 뒤 STEP-03부터 다시 진행합니다.4. 빌드 Task 실행하기
목적 첫 번째 전용 Terminal을 만들고 reveal: "always"를 확인합니다.
- Command Palette에서 Tasks: Run Task를 실행하고 패널 확인: 빌드를 선택합니다.
입력 위치 Command Palette
Artifact 빌드 Task 전용 Integrated Terminal
정상 결과 Terminal이 앞으로 나오고 BUILD task output이 표시됩니다.
확인 Terminal 탭 또는 목록에서 실행한 Task와 연결된 Terminal을 확인합니다.
실패 신호 Terminal이 열리지 않거나 예제와 다른 명령·출력이 나타납니다.
5. 테스트 Task 실행하기
목적 다른 Task의 출력이 별도 전용 Terminal에 격리되는지 확인합니다.
- Tasks: Run Task에서 패널 확인: 테스트를 선택합니다.
입력 위치 Command Palette
Artifact 테스트 Task 전용 Integrated Terminal
정상 결과 같은panel-demo그룹에 분할 창이 생기고TEST task output이 빌드 출력과 다른 창에 표시됩니다.
확인 BUILD와 TEST 문장이 서로 다른 분할 창에 남아 있는지 눈으로 비교합니다.
실패 신호 두 문장이 한 Terminal에 이어지거나 분할 창이 만들어지지 않습니다.
panel과 group은 서로 대체하지 않습니다. 되돌리기: 두 Task를 종료하고 두 값을 EXAMPLE과 맞춘 뒤 STEP-04부터 다시 실행합니다.6. 빌드 Task를 다시 실행하기
목적 전용 Terminal 재사용과 clear: true의 효과를 확인합니다.
- Tasks: Run Task에서 패널 확인: 빌드를 한 번 더 실행합니다.
입력 위치 Command Palette
Artifact 재사용된 빌드 전용 Terminal
정상 결과 새 Terminal이 추가되지 않고 기존 빌드 창이 재사용되며 이전 빌드 출력이 지워진 뒤 새 출력만 보입니다. 테스트 창은 별도로 유지됩니다.
확인 실행 전후 Terminal 수가 같은지, 빌드 문장이 한 실행분만 보이는지, TEST 출력은 다른 창에 남아 있는지 확인합니다.
실패 신호 Terminal이 계속 늘거나 BUILD 출력이 누적되거나 TEST 출력까지 사라집니다.
panel: "new"는 매번 새 Terminal을 만들며 이번 목표와 다릅니다. 되돌리기: panel: "dedicated"와 따옴표 없는 clear: true를 복원하고 STEP-06을 다시 실행합니다.7. 표시 시점을 선택하기
목적 reveal 값을 목적에 맞게 선택하되 이번 완료 상태를 보존합니다.
- RECOMMENDATION · 처음 설정할 때는
always로 관찰하고, 항상 자동 표시를 막고 싶을 때만 해당 Task의 값을never로 바꿉니다.silent는 Problem Matcher와 함께 동작을 이해한 뒤 선택합니다.
입력 위치 각 Task의 presentation.reveal
"presentation": {
"reveal": "never",
"panel": "dedicated",
"group": "panel-demo",
"clear": true
}
정상 결과 never를 선택하면 Task는 실행되지만 Terminal은 사용자가 View > Terminal 또는 Ctrl+`로 열 때까지 앞으로 나오지 않습니다.
확인 Task 실행 후 수동으로 Terminal을 열어 새 출력이 있는지 확인합니다.
실패 신호 출력이 없는 것으로 오해하거나 silent가 항상 숨김이라고 예상합니다.
always가 가장 명확합니다. 되돌리기: 확인이 어렵다면 always로 복원하고 STEP-04부터 다시 관찰합니다.4. 완료 확인하기
입력 화면과 독립된 방법을 포함해 결과를 교차 확인합니다.
- Terminal 화면 확인 — BUILD와 TEST 출력이 서로 다른 분할 창에 보입니다.
- 재실행 전후 비교 — 빌드 Task를 다시 실행해도 Terminal 수가 늘지 않고 빌드 출력만 새 실행분으로 바뀝니다.
- JSON 독립 확인 — Workspace 루트의 PowerShell에서 아래 명령을 실행하면 두 Task 모두
always | dedicated | panel-demo | True가 표시됩니다.
(Get-Content .vscode\tasks.json -Raw | ConvertFrom-Json).tasks |
ForEach-Object {
"{0} | {1} | {2} | {3} | {4}" -f
$_.label,
$_.presentation.reveal,
$_.presentation.panel,
$_.presentation.group,
$_.presentation.clear
}
완료 기준 빌드와 테스트 출력이 분리되고, 같은 Task의 재실행은 자기 전용 Terminal만 재사용하며 이전 출력을 지웁니다.
5. 문제가 생겼다면
두 출력이 한 Terminal에 섞입니다
먼저 확인 각 Task의 presentation.panel 값과 저장 여부를 확인합니다. 원인이 확인되지 않으면 오류 원문과 현재 JSON을 보존하고 UNKNOWN으로 둡니다.
복구 두 값을 모두 문자열 "dedicated"로 고치고 저장한 뒤 실행 중인 Task를 종료합니다.
재합류 STEP-04부터 두 Task를 다시 실행하고 완료 기준을 재확인합니다.
실행할 때마다 Terminal이 늘어납니다
먼저 확인 panel이 "new"인지 확인합니다.
복구 "dedicated"로 복원합니다.
재합류 STEP-06에서 Terminal 수가 유지되는지 다시 확인합니다.
분할 창이 만들어지지 않습니다
먼저 확인 두 Task의 group 문자열에서 대소문자·공백·하이픈을 비교합니다.
복구 둘 다 정확히 "panel-demo"로 맞추고 Task를 다시 실행합니다.
재합류 STEP-04와 STEP-05를 순서대로 실행합니다.
이전 출력이 그대로 남습니다
먼저 확인 clear가 문자열 "true"가 아니라 불리언 true인지 확인합니다.
복구 따옴표를 제거하고 저장합니다.
재합류 STEP-06에서 BUILD 출력이 한 실행분만 남는지 다시 확인합니다.
powershell.exe를 찾지 못하거나 Task가 끝나지 않습니다
먼저 확인 오류 원문을 복사해 보존하고 일반 Integrated Terminal에서 powershell.exe -NoProfile -Command "Write-Output 'probe'"가 끝나는지 확인합니다.
복구 Windows PowerShell이 차단된 관리 환경이면 임의 경로나 다른 Shell을 만들지 말고 관리자 정책을 확인합니다. 원인이 UNKNOWN이면 더 수정하지 않습니다.
재합류 PowerShell probe가 성공한 뒤 STEP-03의 명령을 복원하고 STEP-04로 돌아갑니다.
silent인데 Terminal 표시가 예상과 다릅니다
먼저 확인 해당 Task에 Problem Matcher가 있는지와 revealProblems 설정을 확인합니다. 공식 문서상 revealProblems가 reveal보다 우선합니다.
복구 항상 보고 싶으면 always, 항상 자동 표시를 막고 싶으면 never로 명시합니다.
재합류 STEP-07에서 선택한 표시 정책을 다시 검증합니다.
6. 핵심 정리와 공식 자료
panel: "dedicated"는 Task별 Terminal을 재사용하고 다른 Task의 출력을 격리합니다.group의 같은 문자열은 Task Terminal을 같은 그룹의 분할 창으로 배치합니다.clear: true는 재실행 전에 그 Task의 Terminal을 지웁니다.reveal은 Terminal을 앞으로 가져오는 시점을 정하며always가 기본값입니다.- 완료 상태는 Terminal 화면과 PowerShell JSON 확인을 함께 사용해 검증합니다.
공식 자료
아래 자료는 2026-08-08 Asia/Seoul에 접근했습니다. Stable API와 로컬 code --version은 1.132.0을 가리켰고, 1.132 Release Notes의 공개일은 2026-08-05입니다. Tasks 문서와 Appendix는 현재 문서로서 버전별 변경 이력을 모두 설명하지 않으므로 후속 버전에서는 값과 UI 이름을 다시 확인해야 합니다.
- VS Code Stable Releases API · Microsoft
- Visual Studio Code 1.132 Release Notes · Microsoft
- Tasks: Output behavior · Microsoft
- tasks.json Schema Appendix · Microsoft
runOptions.instanceLimit와 instancePolicy로 두 번째 실행의 처리 방식을 관찰합니다.'개발 > Visual Studio Code' 카테고리의 다른 글
| 커맨드 팔레트 11부: VS Code Task 재실행에서 입력값 재사용하기 (0) | 2026.08.11 |
|---|---|
| 커맨드 팔레트 10부: VS Code Task 중복 실행을 instanceLimit로 제한하기 (0) | 2026.08.09 |
| VS Code Task 출력이 섞인다면? 전용 Terminal로 깔끔하게 정리하기 (0) | 2026.08.08 |
| VS Code 커맨드 팔레트 7부|Task 입력값으로 재사용 가능한 명령 만들기 (0) | 2026.08.07 |
| 커맨드 팔레트 6부: VS Code 폴더를 열 때 Task 자동 실행하기 (0) | 2026.08.05 |