출력이 없는 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
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건 상태를 준비한다.
- 격리 폴더의 empty-output-context.ipynb를 열고 셀 실행·저장·단축키 편집을 하지 않기로 확인한다.
입력 위치 격리 폴더의 empty-output-context.ipynb
execution_count=null, outputs=[], source 한 줄
정상 결과 코드 셀에는 message = 'not executed'만 보이고 출력 영역은 없다.
확인 Notebook JSON의 outputs 배열 길이가 0인지 확인한다.
실패 신호 실행 횟수나 출력이 보이거나 업무 Notebook을 열었다.
2. Collapse When 식 고정
목적 관찰 전에 판정 규칙을 정확히 적는다.
- 현재 Stable 소스의 Collapse Cell Output keybinding When 식을 실습 메모에 적는다.
입력 위치 공식 Stable cellCommands.ts
listFocused && !outputCollapsed && !inputFocus && hasOutputs
정상 결과 네 조건이 모두 true여야 단축키 규칙이 활성이라는 식이 준비된다.
확인 명령 ID notebook.cell.collapseCellOutput와 네 Context key를 원문에서 대조한다.
실패 신호 hasOutputs 또는 부정 연산자가 빠졌다.
3. Developer Tools Console 열기
목적 Inspect Context Keys 결과가 출력될 위치를 준비한다.
- Command Palette에서 Developer: Toggle Developer Tools를 실행하고 Console 탭을 선택한다.
입력 위치 Command Palette → Developer Tools
Console 탭
정상 결과 Console 입력·출력 영역이 보인다.
확인 Developer Tools 상단에서 Console이 선택됐는지 확인한다.
실패 신호 별도 창이나 Console 탭을 찾을 수 없다.
4. 빈 출력 셀을 command mode로 선택
목적 listFocused=true, inputFocus=false인 측정 대상을 만든다.
- 셀 왼쪽 여백을 클릭하고 Esc를 눌러 코드 편집 caret을 없앤다.
입력 위치 Notebook cell container
선택된 셀 / 입력 caret 없음 / 출력 영역 없음
정상 결과 셀 선택 표시는 남고 코드 입력 caret과 출력 내용은 보이지 않는다.
확인 선택 테두리, caret 부재, 출력 0건을 함께 확인한다.
실패 신호 코드 안에서 caret이 깜박이거나 다른 셀이 선택됐다.
5. Context snapshot 수집
목적 빈 출력 셀에 실제 적용된 네 값을 한 객체에서 읽는다.
- Developer: Inspect Context Keys를 실행하고 선택된 셀 컨테이너를 한 번 클릭한다.
입력 위치 Command Palette → selected empty-output cell
Snapshot E
정상 결과 Console에 Context 객체 하나가 추가된다.
확인 객체에서 notebookCellListFocused, inputFocus, notebookCellHasOutputs, notebookCellOutputIsCollapsed를 찾는다.
실패 신호 객체가 없거나 네 key 중 하나가 없다.
6. 빈 출력 상태값 확인
목적 출력 없음이 어떤 Context 값으로 나타나는지 확인한다.
- Snapshot E의 네 값을 한 표에 기록한다.
입력 위치 Developer Tools Console의 단일 Context 객체
listFocused=true / inputFocus=false / hasOutputs=false / outputCollapsed=false
정상 결과 출력이 없으므로 hasOutputs=false이고 접은 적도 없어 outputCollapsed=false다.
확인 네 값을 같은 객체에서 읽었는지 객체 시각과 대상 셀을 대조한다.
실패 신호 hasOutputs=true이거나 outputCollapsed=true다.
7. Collapse When을 항목별 계산
목적 비활성 원인을 추측이 아니라 Boolean 계산으로 설명한다.
- Snapshot E 값을 네 조건에 왼쪽부터 대입한다.
입력 위치 실습 메모
true && !false && !false && false
정상 결과 앞의 세 조건은 true지만 마지막 hasOutputs=false 때문에 전체 결과는 false다.
확인 중간값 true, true, true, false와 최종 false를 나란히 확인한다.
실패 신호 outputCollapsed=false 자체를 실패 원인으로 잘못 해석했다.
8. 단축키 규칙과 명령 자체 구분
목적 When=false의 범위를 과장하지 않는다.
- 결론을 'Collapse Cell Output 키 바인딩의 When 결과가 false'라고 기록한다.
입력 위치 실습 메모
keybinding When=false; Command Palette 노출·직접 명령 실행 여부는 별도 범위
정상 결과 단축키 규칙의 비활성만 결론으로 남는다.
확인 공식 소스에서 When이 keybinding 블록 안에 있는지 확인한다.
실패 신호 명령이 삭제됐거나 Command Palette에서 반드시 숨는다고 적었다.
9. 변경 0건 독립 확인
목적 관찰 과정이 파일과 User 설정을 바꾸지 않았는지 확인한다.
- 실습 전후 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에 항목이 생겼다.
10. 완료 조건 재확인
목적 측정·판정·무변경 증거를 한 번에 닫는다.
- Snapshot E, Boolean 계산, 파일 비교 결과를 체크리스트로 확인한다.
입력 위치 실습 체크리스트
Snapshot E + 실습 메모 + SHA-256
정상 결과 hasOutputs=false, outputCollapsed=false, Collapse When=false, Notebook/키 바인딩 변경 0건이 모두 확인된다.
확인 네 항목이 각각 Evidence에 있는지 독립적으로 확인한다.
실패 신호 한 항목이라도 누락되거나 값이 다르다.
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
6. 핵심 정리와 공식 자료
- 출력 없음과 출력 접힘은 다른 상태입니다.
notebookCellHasOutputs=false하나만으로도 네 항목 AND 식은 false입니다.- When=false는 해당 키 바인딩 규칙의 판정이며 명령 전체의 존재 여부로 확대하지 않습니다.
- 셀 실행·저장·키 바인딩 편집 없이 진단을 끝낼 수 있습니다.
공식 자료
아래 자료는 2026-09-25 KST에 확인했습니다. Stable 1.139.1·커밋 04c0d99f4fb0d8afe6ce4f0c58e31e183ac3e4b1 기준이며 내부 Notebook Context key는 향후 변경될 수 있습니다.
- When clause contexts · Microsoft
- Jupyter Notebooks in VS Code · Microsoft
- Notebook cell commands · Microsoft vscode Stable 1.139.1
- Notebook Context Keys · Microsoft vscode Stable 1.139.1
inputFocus가 Collapse Cell Output 단축키 When 결과를 어떻게 바꾸는지 확인합니다.'개발 > Visual Studio Code' 카테고리의 다른 글
| 커맨드 팔레트 59부: Notebook 출력 포커스에서 셀 선택으로 돌아오기 (0) | 2026.09.27 |
|---|---|
| 커맨드 팔레트 58부: Notebook 입력 모드에서 출력 접기 단축키가 멈추는 이유 (0) | 2026.09.27 |
| 커맨드 팔레트 56부: Notebook 셀 출력 접기 전후 Context Keys 비교하기 (0) | 2026.09.25 |
| 커맨드 팔레트 55부: Notebook 셀 접기 전후 Context Keys 비교하기 (0) | 2026.09.24 |
| 커맨드 팔레트 54부: 같은 Chord의 When 조건을 Context Keys로 확인하기 (0) | 2026.09.22 |