Skip to content

JSONL Support ko

edgar edited this page Feb 23, 2026 · 1 revision

JSONL 지원

jvim은 JSON Lines (.jsonl) 파일을 자동 감지, 포맷팅된 편집, 압축 저장으로 지원합니다.

자동 감지

JSONL 모드는 두 가지 방법으로 활성화됩니다:

  1. 파일 확장자: .jsonl 확장자 파일은 항상 JSONL로 처리
  2. 내용 기반 감지: 다른 확장자의 경우 내용을 분석:
    • 파일에 비어있지 않은 줄이 2개 이상 있어야 함
    • 전체 내용이 단일 JSON 값으로 유효하면 안 됨 (포맷팅된 JSON 배열을 JSONL로 오인하는 것을 방지)
    • 각 비어있지 않은 줄이 개별적으로 유효한 JSON이어야 함
    • 모든 조건을 충족하면 자동으로 JSONL 모드 활성화

즉, JSONL 데이터를 담은 .json 파일도 올바르게 감지됩니다.

포맷팅된 편집

JSONL 파일을 열면 각 레코드가 자동으로 indent=4로 포맷팅되어 읽고 편집하기 편합니다:

디스크 상태:

{"name": "Alice", "age": 30, "email": "alice@example.com"}
{"name": "Bob", "age": 25, "email": "bob@example.com"}

jvim에서:

{
    "name": "Alice",
    "age": 30,
    "email": "alice@example.com"
}
{
    "name": "Bob",
    "age": 25,
    "email": "bob@example.com"
}

압축 저장

저장(:w) 시 각 레코드가 자동으로 한 줄로 압축되어 JSONL 형식이 유지됩니다. 변환 과정:

  1. 포맷팅된 내용을 블록(연속된 비어있지 않은 줄 그룹)으로 분할
  2. 각 블록을 JSON으로 파싱
  3. 각 블록을 압축된 한 줄로 재직렬화
  4. 줄바꿈으로 연결

이 왕복 변환은 무손실입니다 — 데이터가 정확히 보존됩니다.

레코드 번호

거터의 두 번째 열에 JSONL 레코드 번호(1, 2, 3...)가 각 레코드의 첫 번째 줄 옆에 표시됩니다. 레코드가 여러 줄에 걸칠 때 현재 보고 있는 레코드를 쉽게 식별할 수 있습니다.

레코드 인덱스는 캐시되며 내용이 변경될 때 재계산됩니다.

플로팅 헤더

여러 줄에 걸친 레코드를 스크롤할 때 레코드 첫 줄의 물리적 라인 번호가 거터 상단에 계속 표시됩니다. 레코드 헤더가 화면 밖으로 스크롤되어도 현재 어떤 레코드를 보고 있는지 알 수 있습니다.

레코드 탐색

JSONL 모드에서는 레코드 간 탐색을 위한 특별한 명령이 제공됩니다:

명령 설명
:N 레코드 N으로 이동 (1부터 시작). JSONL 모드에서 숫자는 라인 번호가 아닌 레코드 번호로 해석
:pN 레코드 N으로 명시적 이동 (p = "position by record"). JSONL 모드에서 :N과 동일
:lN 라인 N으로 이동 (l = "line"). JSONL 레코드 해석을 무시하고 실제 에디터 라인으로 이동

예시

:1      → 레코드 1로 이동 (첫 번째 레코드)
:5      → 레코드 5로 이동
:p10    → 레코드 10으로 이동
:l25    → 에디터 라인 25로 이동 (레코드 경계 무시)
:$      → 마지막 라인으로 이동

JSONL 특화 동작

검색

JSONL 모드에서 JSONPath 검색을 사용하면 각 레코드가 독립적으로 파싱되고 검색됩니다. 결과는 포맷팅된 에디터 뷰의 위치로 매핑됩니다. 자세한 내용은 JSONPath 검색을 참고하세요.

치환

JSONL 모드에서 JSONPath 치환은 각 레코드에 독립적으로 적용됩니다. 내용이 블록으로 분할되고, 각 블록이 별도의 JSON 문서로 파싱된 후 치환이 레코드별로 적용됩니다. 자세한 내용은 치환을 참고하세요.

Diff

Diff 뷰어는 --jsonl 플래그로 JSONL 비교를 지원합니다 (.jsonl 확장자는 자동 감지). 레코드가 단위로 매칭되고, 변경된 레코드는 내부적으로 라인 단위로 diff됩니다. 자세한 내용은 Diff 뷰어를 참고하세요.

파일 열기 (:e)

:e로 파일을 열 때 새 파일의 내용에 대해 JSONL 감지가 실행되어 JSONL 모드가 자동으로 켜지거나 꺼집니다.


English |

Clone this wiki locally