개발/Visual Studio Code

커맨드 팔레트 57부: 출력이 없는 Notebook 셀의 출력 접기 조건 확인하기

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

출력이 없는 Notebook 셀의 출력 접기 조건 확인하기

셀을 실행하거나 편집하지 않고 Context Keys를 읽어, 출력이 없을 때 Collapse Cell Output 단축키의 When 식이 왜 false가 되는지 확인합니다.

notebookCellHasOutputs=false가 마지막 보호 조건을 막아 전체 When 결과가 false임을 설명할 수 있으면 완료입니다.

출력 접기 규칙이 반응하지 않을 때는 명령이 고장났다고 단정하기 전에, 실제 출력 존재 여부와 포커스·접힘 Context를 한 객체에서 확인하세요.

1. 시작하기 전에

난이도는 초급입니다. JSON 편집이나 셀 실행 없이 화면 선택, Context 조회, Boolean 계산만 합니다.

준비할 것

  • Windows 11과 VS Code Stable 1.139.1 — 확인: Help > About 또는 code --version
  • 출력 0건인 격리 Notebook — 확인: execution_count: null과 outputs: []
  • Developer Tools Console — 확인: Help > Toggle Developer Tools에서 Console 탭 표시

적용 환경 Windows 11 · VS Code Stable 1.139.1 · PowerShell 7 또는 Windows PowerShell

안전하게 시작하기 업무 Notebook과 현재 User 프로필은 보호 대상입니다. 셀 실행, 저장, 단축키 편집, 확장 설치를 하지 않습니다. 중단 조건: 실행 횟수·출력이 생기거나 파일 해시가 달라지면 즉시 중단하고 원본을 보존합니다.

2. 알아둘 핵심 개념

When clause

Context key의 현재 값을 조합해 키 바인딩 같은 UI 규칙이 적용되는 조건을 표현합니다. &&는 모든 항목이 true여야 하고 !는 Boolean을 반전합니다.

notebookCellHasOutputs

선택 셀에 출력이 있으면 true, 출력이 없으면 false인 Notebook 내부 Context key입니다. 내부 key는 향후 바뀔 수 있으므로 확인 시점과 Stable 버전을 함께 기록합니다.

notebookCellOutputIsCollapsed

출력 영역이 접힌 상태인지 나타냅니다. 출력이 없다는 뜻과 접혀 있다는 뜻은 다르며, 이 실습에서는 둘 다 false입니다.

확인 범위

이번 실습이 판정하는 것은 Collapse Cell Output 키 바인딩의 When 식입니다. Command Palette 노출이나 직접 명령 호출 가능 여부까지 일반화하지 않습니다.

3. 순서대로 진행하기

각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.

1. 격리된 빈 출력 Notebook 확인

목적 업무 파일과 현재 User 프로필을 보호한 채 출력 0건 상태를 준비한다.

  1. 격리 폴더의 empty-output-context.ipynb를 열고 셀 실행·저장·단축키 편집을 하지 않기로 확인한다.

입력 위치 격리 폴더의 empty-output-context.ipynb

execution_count=null, outputs=[], source 한 줄
정상 결과 코드 셀에는 message = 'not executed'만 보이고 출력 영역은 없다.

확인 Notebook JSON의 outputs 배열 길이가 0인지 확인한다.

실패 신호 실행 횟수나 출력이 보이거나 업무 Notebook을 열었다.

복구와 재합류 저장하지 않고 닫은 뒤 제공된 격리 샘플에서 STEP-01로 재합류한다.

2. Collapse When 식 고정

목적 관찰 전에 판정 규칙을 정확히 적는다.

  1. 현재 Stable 소스의 Collapse Cell Output keybinding When 식을 실습 메모에 적는다.

입력 위치 공식 Stable cellCommands.ts

listFocused && !outputCollapsed && !inputFocus && hasOutputs
정상 결과 네 조건이 모두 true여야 단축키 규칙이 활성이라는 식이 준비된다.

확인 명령 ID notebook.cell.collapseCellOutput와 네 Context key를 원문에서 대조한다.

실패 신호 hasOutputs 또는 부정 연산자가 빠졌다.

복구와 재합류 Stable 커밋 원문을 다시 열고 STEP-02로 돌아온다.

3. Developer Tools Console 열기

목적 Inspect Context Keys 결과가 출력될 위치를 준비한다.

  1. Command Palette에서 Developer: Toggle Developer Tools를 실행하고 Console 탭을 선택한다.

입력 위치 Command Palette → Developer Tools

Console 탭
정상 결과 Console 입력·출력 영역이 보인다.

확인 Developer Tools 상단에서 Console이 선택됐는지 확인한다.

실패 신호 별도 창이나 Console 탭을 찾을 수 없다.

복구와 재합류 Help > Toggle Developer Tools로 다시 열고 STEP-03에 재합류한다.

4. 빈 출력 셀을 command mode로 선택

목적 listFocused=true, inputFocus=false인 측정 대상을 만든다.

  1. 셀 왼쪽 여백을 클릭하고 Esc를 눌러 코드 편집 caret을 없앤다.

입력 위치 Notebook cell container

선택된 셀 / 입력 caret 없음 / 출력 영역 없음
정상 결과 셀 선택 표시는 남고 코드 입력 caret과 출력 내용은 보이지 않는다.

확인 선택 테두리, caret 부재, 출력 0건을 함께 확인한다.

실패 신호 코드 안에서 caret이 깜박이거나 다른 셀이 선택됐다.

복구와 재합류 Esc를 누르고 같은 셀 왼쪽 여백을 다시 선택해 STEP-04를 반복한다.

5. Context snapshot 수집

목적 빈 출력 셀에 실제 적용된 네 값을 한 객체에서 읽는다.

  1. Developer: Inspect Context Keys를 실행하고 선택된 셀 컨테이너를 한 번 클릭한다.

입력 위치 Command Palette → selected empty-output cell

Snapshot E
정상 결과 Console에 Context 객체 하나가 추가된다.

확인 객체에서 notebookCellListFocused, inputFocus, notebookCellHasOutputs, notebookCellOutputIsCollapsed를 찾는다.

실패 신호 객체가 없거나 네 key 중 하나가 없다.

복구와 재합류 클릭 대상과 오류 원문을 보존하고 STEP-04부터 다시 측정한다.

6. 빈 출력 상태값 확인

목적 출력 없음이 어떤 Context 값으로 나타나는지 확인한다.

  1. Snapshot E의 네 값을 한 표에 기록한다.

입력 위치 Developer Tools Console의 단일 Context 객체

listFocused=true / inputFocus=false / hasOutputs=false / outputCollapsed=false
정상 결과 출력이 없으므로 hasOutputs=false이고 접은 적도 없어 outputCollapsed=false다.

확인 네 값을 같은 객체에서 읽었는지 객체 시각과 대상 셀을 대조한다.

실패 신호 hasOutputs=true이거나 outputCollapsed=true다.

복구와 재합류 다른 셀·이전 snapshot 가능성을 UNKNOWN으로 기록하고 STEP-01부터 다시 확인한다.

7. Collapse When을 항목별 계산

목적 비활성 원인을 추측이 아니라 Boolean 계산으로 설명한다.

  1. Snapshot E 값을 네 조건에 왼쪽부터 대입한다.

입력 위치 실습 메모

true && !false && !false && false
정상 결과 앞의 세 조건은 true지만 마지막 hasOutputs=false 때문에 전체 결과는 false다.

확인 중간값 true, true, true, false와 최종 false를 나란히 확인한다.

실패 신호 outputCollapsed=false 자체를 실패 원인으로 잘못 해석했다.

복구와 재합류 !outputCollapsed는 true임을 다시 적고 STEP-07을 재계산한다.

8. 단축키 규칙과 명령 자체 구분

목적 When=false의 범위를 과장하지 않는다.

  1. 결론을 'Collapse Cell Output 키 바인딩의 When 결과가 false'라고 기록한다.

입력 위치 실습 메모

keybinding When=false; Command Palette 노출·직접 명령 실행 여부는 별도 범위
정상 결과 단축키 규칙의 비활성만 결론으로 남는다.

확인 공식 소스에서 When이 keybinding 블록 안에 있는지 확인한다.

실패 신호 명령이 삭제됐거나 Command Palette에서 반드시 숨는다고 적었다.

복구와 재합류 그 문장을 삭제하고 확인한 범위만 남긴 뒤 STEP-08에 재합류한다.

9. 변경 0건 독립 확인

목적 관찰 과정이 파일과 User 설정을 바꾸지 않았는지 확인한다.

  1. 실습 전후 Notebook SHA-256과 격리 User keybindings.json을 비교한다.

입력 위치 PowerShell · Run 폴더에서 실행

Get-FileHash .\_qa\notebook-fixture\empty-output-context.ipynb -Algorithm SHA256
정상 결과 Notebook 해시는 동일하고 격리 keybindings.json은 [] 그대로다.

확인 전후 해시 문자열과 keybindings.json 원문을 비교한다.

실패 신호 해시가 달라지거나 keybindings.json에 항목이 생겼다.

복구와 재합류 변경 파일을 보존하고 원인을 UNKNOWN으로 기록한 뒤 새 격리 복사본에서 STEP-01로 돌아간다.

10. 완료 조건 재확인

목적 측정·판정·무변경 증거를 한 번에 닫는다.

  1. Snapshot E, Boolean 계산, 파일 비교 결과를 체크리스트로 확인한다.

입력 위치 실습 체크리스트

Snapshot E + 실습 메모 + SHA-256
정상 결과 hasOutputs=false, outputCollapsed=false, Collapse When=false, Notebook/키 바인딩 변경 0건이 모두 확인된다.

확인 네 항목이 각각 Evidence에 있는지 독립적으로 확인한다.

실패 신호 한 항목이라도 누락되거나 값이 다르다.

복구와 재합류 PASS를 금지하고 누락 항목의 이전 단계로 돌아가 다시 확인한다.

4. 완료 확인하기

입력 화면과 독립된 파일 비교를 포함해 결과를 교차 확인합니다.

  • Context snapshot — true / false / false / false 순서가 한 객체에서 확인됩니다.
  • Boolean 계산 — true && true && true && false의 결과가 false입니다.
  • Notebook SHA-256 — 실습 전후가 같습니다.
  • 격리 User keybindings.json — [] 그대로입니다.
완료 기준 출력 0건이 notebookCellHasOutputs=false로 나타나며, 이 값 때문에 Collapse Cell Output 키 바인딩 When 결과가 false이고 파일·키 바인딩 변경이 0건임을 설명할 수 있습니다.

5. 문제가 생겼다면

notebookCellHasOutputs가 true다

먼저 확인 같은 셀에 이전 실행 결과, 오류 출력, Markdown 렌더 결과가 남았는지 봅니다.

복구 현재 파일을 수정하지 말고 제공된 outputs=[] 격리 샘플을 다시 엽니다.

재합류 STEP-01

inputFocus가 true다

먼저 확인 코드 입력 caret이 깜박이는지 봅니다.

복구 Esc를 누르고 셀 왼쪽 여백을 선택합니다.

재합류 STEP-04

Inspect 결과에 key가 없다

먼저 확인 셀 컨테이너가 아닌 출력·편집기·Developer Tools를 클릭했는지 확인합니다.

복구 대상과 오류 원문을 보존하고 셀 왼쪽 여백을 다시 선택합니다. 원인을 확정할 수 없으면 UNKNOWN으로 기록합니다.

재합류 STEP-04

파일 해시가 달라졌다

먼저 확인 자동 저장, 수동 저장, 셀 실행 여부를 확인합니다.

복구 변경본을 덮어쓰지 말고 별도로 보존한 뒤 새 격리 복사본으로 다시 시작합니다.

재합류 STEP-01

핵심 판단 원인을 확인하지 못하면 상태와 Evidence를 보존하고 임의 변경 없이 중단합니다.

6. 핵심 정리와 공식 자료

  • 출력 없음과 출력 접힘은 다른 상태입니다.
  • notebookCellHasOutputs=false 하나만으로도 네 항목 AND 식은 false입니다.
  • When=false는 해당 키 바인딩 규칙의 판정이며 명령 전체의 존재 여부로 확대하지 않습니다.
  • 셀 실행·저장·키 바인딩 편집 없이 진단을 끝낼 수 있습니다.

공식 자료

아래 자료는 2026-09-25 KST에 확인했습니다. Stable 1.139.1·커밋 04c0d99f4fb0d8afe6ce4f0c58e31e183ac3e4b1 기준이며 내부 Notebook Context key는 향후 변경될 수 있습니다.

다음 편 예고 커맨드 팔레트 58부에서는 출력이 있는 셀에서 입력 모드와 command mode를 비교해 inputFocus가 Collapse Cell Output 단축키 When 결과를 어떻게 바꾸는지 확인합니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.