개발/Visual Studio Code

커맨드 팔레트 22부: VS Code 최근 실행 Task 목록을 3개로 줄이기

반응형
VS CODE 초보자 시리즈 · 커맨드 팔레트 22부

최근 실행 Task 기록을 3개로 줄이기

task.quickOpen.history를 Workspace 범위에서 3으로 설정하고, Tasks: Run Task의 최근 사용 영역에 마지막 세 Task만 남는지 확인합니다.

네 개의 안전한 실습 Task를 A→B→C→D 순서로 실행한 뒤 Quick Pick의 recently used 영역이 D→C→B 세 항목만 보여 주면 완료입니다.

이 설정은 Task 자체를 삭제하거나 실행을 막지 않습니다. 최근 사용 영역의 추적 개수만 바꾸며, 제외된 Task는 구성된 Task 영역에서 계속 찾을 수 있습니다.

1. 시작하기 전에

난이도: 초급. 빈 폴더에 Workspace 설정 파일과 Task 파일을 만들고, 화면에서 네 Task를 순서대로 실행합니다. 기본 환경은 Windows 11, VS Code Stable 1.134.0, Windows PowerShell 5.1 계열입니다.

준비할 것

  • 직접 만든 빈 실습 폴더 — File > Open Folder...로 열어야 Workspace 설정과 Task가 같은 범위에 적용됩니다.
  • VS Code Stable — PowerShell에서 code --version을 실행합니다. 이 글의 공식·로컬 기준은 2026-08-21 Stable 1.134.0, commit 110a328ea54b42367b803ec53ee0bf52ef26b419입니다.
  • Windows PowerShell — powershell.exe -NoProfile -Command "$PSVersionTable.PSVersion.ToString()"이 종료 코드 0으로 끝나는지 확인합니다.
  • 기존 .vscode/settings.json과 .vscode/tasks.json 보호 — 하나라도 이미 있으면 덮어쓰지 말고 새 빈 폴더를 사용합니다.

설정 계약 Key: task.quickOpen.history · Type: Number · 허용 범위: 0..30 · 기본값: 30 · 이번 실습 범위: Workspace · 실습값: 3.

실행 전 Human Gate 이 실습은 새 Workspace에 .vscode/settings.json과 .vscode/tasks.json을 만듭니다. Task는 Terminal에 짧은 문자열만 출력하며 파일을 삭제하거나 외부로 전송하지 않습니다. 보호 대상: 기존 설정·Task 파일과 실제 프로젝트. 중단 조건: 폴더의 출처를 모르거나 같은 파일이 이미 있거나 명령을 이해하지 못하면 실행하지 않습니다. Rollback: 본인이 이 실습에서 새로 만든 두 JSON 파일만 제거하거나 폴더 전체를 보관한 채 닫습니다.

2. 알아둘 핵심 개념

task.quickOpen.history

FACT. Stable 1.134.0 소스는 이 설정을 Task Quick Open 대화 상자가 추적하는 최근 항목 수로 정의합니다. 자료형은 Number, 기본값은 30, 최소값은 0, 최대값은 30입니다.

recently used 영역

FACT. Tasks: Run Task의 첫 Quick Pick은 최근 사용 Task가 있으면 별도 영역으로 만들고, 최근 Task와 구성된 Task의 중복을 제거합니다. 화면 언어에 따라 영역 이름은 번역될 수 있습니다.

값 0과 값 3

FACT. 공식 1.40 Release Notes는 0이 최근 Task 영역을 비활성화한다고 설명합니다. 이 글은 영역을 완전히 없애지 않고 마지막 세 항목만 유지하도록 3을 사용합니다.

최근 기록과 Task 정의의 차이

FACT. 최근 기록은 Workspace 저장소에 유지되는 실행 이력입니다. .vscode/tasks.json의 Task 정의는 그대로 남으므로 기록 한도에서 밀려난 A Task도 구성된 Task 영역에서 실행할 수 있습니다.

관찰 가능한 완료 상태

EXAMPLE. A→B→C→D 네 Task를 실행한 뒤 다시 Tasks: Run Task를 열었을 때 최근 사용 영역에 D, C, B만 이 순서로 보이고 A는 그 영역에 없으면 완료입니다.

3. 순서대로 진행하기

각 단계의 정상 결과를 확인한 뒤 다음으로 이동합니다. <실습폴더>는 직접 만든 빈 폴더의 실제 경로로 바꿉니다.

1. 빈 실습 폴더를 Workspace로 열기

목적 최근 Task 기록과 설정 변경을 실제 프로젝트에서 분리합니다.

  1. File > Open Folder...에서 <실습폴더>를 엽니다. Workspace Trust 안내가 나오면 본인이 만든 빈 폴더인지 확인한 뒤에만 신뢰합니다.

입력 위치 VS Code File 메뉴와 폴더 선택 창

<실습폴더>
└─ 아직 파일 없음
정상 결과 Explorer 최상단에 실습 폴더 하나만 표시됩니다.

확인 Terminal > New Terminal에서 Get-Location을 실행하고 마지막 경로가 <실습폴더>인지 확인합니다.

실패 신호 단일 파일만 열렸거나 Terminal 경로가 다른 프로젝트입니다.

Recovery 폴더를 닫고 새 빈 폴더를 열어 S01에 재합류합니다. 출처를 확인하지 못한 폴더는 신뢰하지 않습니다.

2. 보호 대상 JSON 파일이 없는지 확인하기

목적 기존 Workspace 설정과 Task 정의의 덮어쓰기를 막습니다.

  1. Integrated Terminal에서 아래 읽기 전용 명령을 실행합니다.

입력 위치 Integrated Terminal · Shell: PowerShell · 실행 위치: <실습폴더>

@(
  '.\.vscode\settings.json',
  '.\.vscode\tasks.json'
) | ForEach-Object { "$_=$((Test-Path -LiteralPath $_))" }
정상 결과 두 경로가 모두 False입니다.

확인 출력 두 줄을 원문과 비교합니다.

실패 신호 하나라도 True이거나 접근 오류가 납니다.

Recovery 기존 파일을 삭제하거나 덮어쓰지 말고 새 빈 폴더를 만들어 S01부터 다시 진행합니다.

3. 최근 기록 한도를 Workspace에 3으로 저장하기

목적 다른 프로젝트에 영향을 주지 않고 현재 실습 Workspace의 최근 Task 수만 제한합니다.

  1. Explorer에서 .vscode 폴더와 그 안의 settings.json을 새로 만들고 아래 전체 내용을 저장합니다.

입력 위치 <실습폴더>\.vscode\settings.json · 범위: Workspace

{
  "task.quickOpen.history": 3
}
정상 결과 빨간 물결선 없이 저장되고 Settings 검색 @id:task.quickOpen.history에 Workspace 값 3이 보입니다.

확인 값이 따옴표 없는 Number 3인지 확인합니다. 문자열 "3"은 사용하지 않습니다.

실패 신호 Incorrect type, 범위 오류, 쉼표 오류 또는 저장되지 않음 표시가 남습니다.

영향과 Rollback 이 Workspace의 최근 Task 표시 수가 바뀝니다. 되돌리려면 실습 후 이 키를 제거하거나 값을 30으로 바꿉니다. 팀 정책으로 파일이 관리된다면 수정하지 말고 중단합니다.

4. 네 개의 안전한 Task 작성하기

목적 최근 기록 한도보다 하나 많은 Task를 만들어 가장 오래된 항목이 밀려나는지 확인합니다.

  1. .vscode 폴더 안에 tasks.json을 만들고 아래 전체 내용을 저장합니다.

입력 위치 <실습폴더>\.vscode\tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "History demo A",
      "type": "process",
      "command": "powershell.exe",
      "args": ["-NoLogo", "-NoProfile", "-Command", "Write-Output 'HISTORY=A'"],
      "problemMatcher": []
    },
    {
      "label": "History demo B",
      "type": "process",
      "command": "powershell.exe",
      "args": ["-NoLogo", "-NoProfile", "-Command", "Write-Output 'HISTORY=B'"],
      "problemMatcher": []
    },
    {
      "label": "History demo C",
      "type": "process",
      "command": "powershell.exe",
      "args": ["-NoLogo", "-NoProfile", "-Command", "Write-Output 'HISTORY=C'"],
      "problemMatcher": []
    },
    {
      "label": "History demo D",
      "type": "process",
      "command": "powershell.exe",
      "args": ["-NoLogo", "-NoProfile", "-Command", "Write-Output 'HISTORY=D'"],
      "problemMatcher": []
    }
  ]
}
정상 결과 JSON 오류 없이 저장되고 네 label이 모두 다릅니다.

확인 각 Task가 powershell.exe로 한 줄만 출력하며 파일 쓰기·삭제·설치·권한 상승·외부 전송 명령이 없는지 읽습니다.

실패 신호 빨간 물결선, 중복 label, 이해하지 못한 명령 또는 저장되지 않음 표시가 남습니다.

Human Gate 네 command와 args를 직접 읽고 출력 전용임을 확인한 뒤에만 실행합니다. Recovery: 실행하지 말고 JSON을 S04 원문과 비교해 수정합니다.

5. 두 JSON 파일을 독립 검증하기

목적 UI 실행 전에 설정 자료형·범위와 Task 수·label을 PowerShell로 확인합니다.

  1. 새 PowerShell Terminal에서 아래 읽기 전용 검증을 실행합니다.

입력 위치 Integrated Terminal · Shell: PowerShell · 실행 위치: <실습폴더>

$settings = Get-Content -Raw -LiteralPath '.\.vscode\settings.json' | ConvertFrom-Json
$tasks = Get-Content -Raw -LiteralPath '.\.vscode\tasks.json' | ConvertFrom-Json
$history = $settings.'task.quickOpen.history'
[pscustomobject]@{
  HistoryType = $history.GetType().Name
  HistoryValue = $history
  InRange = ($history -ge 0 -and $history -le 30)
  TaskCount = @($tasks.tasks).Count
  Labels = (@($tasks.tasks.label) -join ',')
  UniqueLabels = @($tasks.tasks.label | Sort-Object -Unique).Count
}
정상 결과 HistoryType=Int32, HistoryValue=3, InRange=True, TaskCount=4, UniqueLabels=4이며 Labels가 A,B,C,D 순서입니다.

확인 여섯 값과 label 순서를 정확히 비교합니다.

실패 신호 JSON 파싱 오류, String 자료형, 범위 밖 값, Task 수나 고유 label 수 불일치가 나타납니다.

Recovery 오류 원문과 줄 번호를 보존합니다. S03 또는 S04 원문과 비교해 고친 뒤 S05의 여섯 값이 모두 정상일 때만 S06으로 재합류합니다.

6. A, B, C, D Task를 차례로 실행하기

목적 최근 사용 순서를 관찰할 네 개의 기록으로 만듭니다.

  1. Ctrl+Shift+P를 누르고 Tasks: Run Task를 실행합니다.
  2. History demo A를 선택해 HISTORY=A와 종료 코드 0을 확인합니다.
  3. 같은 방법으로 B, C, D를 이 순서로 한 번씩 실행하고 각각의 출력과 종료 코드 0을 확인합니다.

입력 위치 Command Palette → Tasks: Run Task → Run Task Quick Pick

실행 순서: A → B → C → D
예상 출력: HISTORY=A
           HISTORY=B
           HISTORY=C
           HISTORY=D
정상 결과 네 Task가 순서대로 종료 코드 0으로 끝나고 Terminal에 대응하는 한 줄이 표시됩니다.

확인 다음 Task를 시작하기 전에 직전 출력 글자와 종료 상태를 확인합니다.

실패 신호 순서가 달라졌거나 출력이 다르거나 Task가 계속 실행 중이거나 오류 원문이 나타납니다.

Recovery 오류 원문과 실제 실행 순서를 보존합니다. 원인은 UNKNOWN으로 두고 S04와 S05를 다시 확인합니다. 순서가 틀렸다면 새 빈 폴더로 돌아가 S01부터 다시 시작해야 정확한 최근 순서를 재현할 수 있습니다.

7. 최근 사용 영역의 세 항목 확인하기

목적 설정값 3이 Quick Pick의 최근 Task 표시 결과에 반영됐는지 관찰합니다.

  1. 다시 Ctrl+Shift+P를 누르고 Tasks: Run Task를 실행합니다. 아무 Task도 선택하지 않습니다.

입력 위치 Run Task Quick Pick의 첫 화면

recently used / 최근 사용
1. History demo D
2. History demo C
3. History demo B

History demo A는 이 영역에 없음
정상 결과 최근 사용 영역에 D, C, B만 이 순서로 보입니다. A는 최근 영역에서 빠지지만 구성된 Task 영역에서는 찾을 수 있습니다.

확인 최근 영역의 항목 수를 세고 D→C→B 순서와 A 부재를 확인한 뒤 Esc로 닫습니다.

실패 신호 네 개 이상 보이거나 A가 최근 영역에 있거나 최근 영역이 없거나 순서가 다릅니다.

Recovery S03의 Workspace 값이 3인지, S06의 실제 순서가 A→B→C→D인지 확인합니다. 표시가 갱신되지 않으면 Developer: Reload Window로 현재 창을 다시 불러온 뒤 S06을 같은 순서로 다시 수행하고 S07에 재합류합니다. 저장하지 않은 편집기가 있으면 먼저 저장하거나 Reload를 취소합니다.

8. 완료 상태를 기록하고 설정을 되돌릴 방법 확인하기

목적 설정 파일의 실제 값과 UI 관찰을 교차 확인하고, 실습 범위를 안전하게 종료합니다.

  1. PowerShell에서 설정값을 다시 읽고 아래 결과를 확인합니다.
  2. 실습을 유지할지, 키를 제거해 기본값으로 돌아갈지 결정합니다.

입력 위치 Integrated Terminal · Shell: PowerShell · 실행 위치: <실습폴더>

$value = (Get-Content -Raw '.\.vscode\settings.json' | ConvertFrom-Json).'task.quickOpen.history'
[pscustomobject]@{
  WorkspaceHistoryLimit = $value
  ExpectedRecentOrder = 'D,C,B'
  ManualUiCheck = '<S07에서 PASS 또는 FAIL을 직접 기록>'
}
정상 결과 WorkspaceHistoryLimit=3이고 수동 UI 확인을 PASS로 기록할 수 있습니다.

확인 파일 값 3, 최근 영역 세 항목, D→C→B 순서, A 부재의 네 조건을 함께 확인합니다.

실패 신호 값이 3이 아니거나 UI 조건 중 하나라도 맞지 않거나 수동 확인을 수행하지 못했습니다.

Rollback 기본 동작으로 돌아가려면 task.quickOpen.history 키를 제거하거나 Number 30으로 바꿉니다. 실습 폴더를 정리할 때는 본인이 S03·S04에서 새로 만든 두 JSON 파일만 대상으로 합니다. 경로가 확실하지 않으면 삭제하지 않고 폴더를 닫습니다.

4. 완료 확인하기

  • .vscode/settings.json의 task.quickOpen.history가 Number 3이다.
  • 네 Task를 A→B→C→D 순서로 실행했고 각 출력과 종료 코드 0을 확인했다.
  • Tasks: Run Task의 최근 사용 영역에 D→C→B 세 항목만 보인다.
  • A는 최근 사용 영역에 없지만 구성된 Task 영역에서 찾을 수 있다.
완료 기준 네 항목이 모두 맞아야 완료입니다. 설정값은 PowerShell로 독립 검증하고, 실제 최근 영역의 항목 수와 순서는 VS Code UI에서 확인합니다.

5. 문제가 생겼다면

최근 사용 영역에 네 Task가 모두 보입니다

먼저 확인 Settings에서 @id:task.quickOpen.history를 검색해 현재 Workspace 값이 3인지 확인합니다. 복구 저장 후 Quick Pick을 닫았다 다시 엽니다. 여전히 같으면 저장하지 않은 파일을 보호한 뒤 Developer: Reload Window를 실행하고 S06부터 다시 진행합니다. 재합류: S07.

최근 사용 영역이 없습니다

먼저 확인 값이 0이 아닌지, 네 Task가 실제로 종료 코드 0으로 실행됐는지 확인합니다. 복구 Number 3을 저장하고 A→B→C→D를 다시 실행합니다. 재합류: S06.

순서가 D→C→B가 아닙니다

먼저 확인 다른 Task를 중간에 실행했거나 A→B→C→D 순서를 바꾸지 않았는지 Terminal 기록을 확인합니다. 복구 기존 기록을 지우는 대신 새 빈 실습 폴더에서 정확한 순서로 다시 시작합니다. 재합류: S01.

Incorrect type 또는 범위 오류가 납니다

먼저 확인 값이 문자열 "3"이 아니라 Number 3인지, 0..30 안인지 확인합니다. 복구 S03 원문과 비교해 수정하고 S05의 독립 검증을 통과합니다. 재합류: S05.

원인은 확인하지 못했습니다

먼저 확인 VS Code 버전, Workspace 경로, 설정 범위, 두 JSON 원문, 실제 실행 순서와 오류 원문을 보존합니다. 복구 원인을 UNKNOWN으로 기록하고 새 빈 폴더의 최소 예제로 재현합니다. 재합류: S01.

핵심 판단 최근 기록 수를 줄이는 것은 Task 정의 삭제가 아닙니다. UI 결과가 다르면 설정값·실행 순서·Workspace 범위를 먼저 분리해서 확인합니다.

6. 핵심 정리와 공식 자료

  • task.quickOpen.history는 Number이며 기본값 30, 허용 범위 0..30입니다.
  • 값 3은 최근 Task 영역을 마지막 세 항목으로 제한하고, 값 0은 그 영역을 비활성화합니다.
  • 최근 기록에서 밀려난 Task도 tasks.json에 남아 구성된 Task 영역에서 찾을 수 있습니다.
  • 완료는 파일 값 3과 UI의 D→C→B 세 항목을 교차 확인해 판정합니다.

Source

아래 자료는 2026-08-21 Asia/Seoul에 접근했습니다. Stable 고정 소스는 commit 110a328ea54b42367b803ec53ee0bf52ef26b419 범위이며 이후 버전에서는 UI와 구현이 달라질 수 있습니다.

다음 편 예고 커맨드 팔레트 23부 — Task가 하나일 때 선택 목록 건너뛰기. task.quickOpen.skip의 Boolean 기본값과 단일 구성 Task 조건을 확인하고, Tasks: Run Task가 바로 실행되는지 검증합니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.