C.W.K.
Stream
Lesson 02 of 08 · published

들여쓰기 — 스페이스만, 항상

~10 min · yaml, indentation, whitespace

Level 0평문
0 XP0/64 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

YAML 의 가장 중요한 규칙

YAML 이 들여쓰기로 중첩 표시. 들여쓰기는 스페이스만 — 탭 금지. 대부분 파서가 들여쓰기 탭을 명확한 에러로 거부; 일부는 허용하고 정렬 조용히 깨뜨림.

얼마나 들여쓰기

spec 은 관대: 같은 블록 안에서 일관된 스페이스 수면 어떤 수든 작동. 관행은 2 칸. 일부 도구 (옛 Ansible role, 일부 Kubernetes manifest 예제) 는 4 칸 사용. 파일당 하나 골라 고수해.

부모의 이름 너머 들여쓰기

자식은 부모의 콜론이 아니라 이름 너머로 들여써야 해. foo:\n bar: 1 이 작동하는 건 barfoo 시작 너머 앉기 때문. 한 칸이라도 misalign 하면 파서가 거부하거나 데이터 모양 다르게 읽음.

'tab vs space' 함정: 에디터가 filetype 감지에 따라 자동으로 탭 변환. YAML 파일이 'plain text' 로 감지되면 에디터가 탭 삽입, YAML 파서 죽음, 에러는 보통 'expected mapping value, got X' 라며 들여쓴 줄 가리킴 — 문제 탭 아니라. 에디터 설정: YAML 파일은 항상 스페이스 삽입.

Code

표준 2 칸 들여쓰기·yaml
server:
  host: localhost
  port: 8000
  database:
    name: pippa
    pool_size: 5
logging:
  level: info
  format: json
같은 데이터, 4 칸 들여쓰기 (역시 유효)·yaml
server:
    host: localhost
    port: 8000
    database:
        name: pippa
        pool_size: 5
깨진 — 탭과 스페이스 혼합·text
server:
  host: localhost     ← spaces
	port: 8000          ← TAB → parser dies
  database:           ← spaces
      name: pippa     ← inconsistent indent depth
에디터 설정 (VS Code)·json
// .vscode/settings.json
{
  "[yaml]": {
    "editor.tabSize": 2,
    "editor.insertSpaces": true,
    "editor.detectIndentation": false
  }
}

External links

Exercise

실제 YAML 파일 (docker-compose.yaml, workflow 파일, 무엇이든) 골라. cat -A file.yaml (Linux) 또는 cat -te file.yaml (macOS) 실행 — output 의 ^I 마커가 탭 문자 드러냄. 에디터를 YAML 파일에서 탭을 스페이스로 확장하도록 설정. 파일 편집 후 다시 확인. dotfiles 에 에디터 설정 저장.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.