TL;DR
fx 40.0.0은 뷰어에서 쿼리를 실시간으로 작성하고 자동 완성할 수 있으며, XML·HTML·EDN·MAML 입력과 다양한 뷰어 기능을 제공하는 대규모 릴리스임.- 쿼리 결과를 입력 중에 미리 볼 수 있고, 데이터의 키를 탭으로 자동 완성하며, 쿼리 기록과 취소 기능도 제공함.
Bubble Tea v2기반으로 전환하고 SSH 복사, 터미널 제목 표시, 붙여넣기와 색상 처리 등을 개선함.- Vim 스타일 명령, 재귀 키 정렬·키 삭제·종료 함수와 괄호 이동·파일 다시 불러오기·미리보기 검색 기능을 제공함.
- 안정성 문제를 수정하고 일부 기존 기능을 제거했으며, 빈 입력에서 비정상 종료 코드를 반환하고 비 JSON 파일 덮어쓰기를 거부함.
대화형 쿼리
- 뷰어에서
.을 눌러 쿼리 입력을 시작하며, 입력하는 동안 결과가 매번 갱신되는 실시간 미리보기를 제공함. - 데이터의 키를 탭으로 자동 완성하며 람다 안에서도 작동함. 배열에서는 모든 요소와 문서를 탐색하고, 배열의
.items.입력을.items[].key형태로 완성함. - 명령줄과 같은
fx문법에서 여러 인수를 사용할 수 있으며,.users ?.active @.name은 필터링 후 매핑하는 예시임. - 쿼리 입력창에서 자바스크립트(JavaScript) 구문 강조를 지원함.
- 위쪽·아래쪽 화살표로 이전 쿼리를 탐색하며, 작성 중이던 초안도 보존함.
Esc를 누르면 쿼리를 취소하고 원래 문서로 돌아감.- 끝나지 않는 쿼리는 취소할 수 있고, 스트리밍 문서는 쿼리 실행 중에도 계속 들어옴.
- 같은 자동 완성 엔진이 셸 자동 완성에도 적용되어,
fx data.json .us<Tab>이 터미널 UI(TUI)와 셸에서 동일하게 작동함.
새로운 입력 형식: XML, HTML, EDN, MAML
- XML, HTML, EDN, MAML 파일을 각각
.rss.channel.item[].title,.html.body,.paths,.server.port같은 경로 쿼리로 탐색할 수 있음. - XML 입력 옵션은
--xml,.xml,.svg이며, 속성은@attr, 텍스트는#text로 변환하고 반복되는 자식 요소는 배열로 변환함. 익숙한xmltodict매핑 방식이며, 네임스페이스 접두사는 원래 표기를 유지하고 비 UTF-8 문자 집합도 처리함. 루트 요소가 여러 개인 파일은 JSON 문서 스트림으로 변환함. - HTML 입력 옵션은
--html,.html,.htm이며, 실제 웹 페이지의 잘못된 마크업도 불러올 수 있도록 전체 HTML5 트리로 파싱함.<meta charset>설정도 반영함. - EDN 입력 옵션은
--edn,.edn이며, 키워드에서 콜론을 제거하므로:paths를.paths로 쿼리함. 키 순서와 큰 정수를 보존함. - MAML 입력 옵션은
--maml,.maml이며, 키 순서와 숫자의 정확한 텍스트를 보존함. 쿼리와fx의 npm 버전에서MAML.parse및MAML.stringify도 사용할 수 있음.
Vim 스타일 명령
:를 눌러 명령줄을 엶.:w [file]은 현재 뷰 또는 쿼리 결과를 파일에 기록함.:wq는 기록한 뒤 종료함.:w !cmd는 JSON을 셸 명령으로 전달하며,:w !less,:w !vim -,:w !code -,:w !pbcopy등을 사용할 수 있음.:q는 종료 명령임.:<n>은 지정한 줄 번호로 이동함.
Bubble Tea v2
fx가Bubble Tea v2에서 실행됨.- SSH를 통한 복사에서 OSC 52를 사용하고, 사용할 수 없으면 로컬 클립보드 도구로 대체함. 이 변경으로 #283과 #413을 수정함.
- 터미널 창 제목에 파일 이름을 표시함.
- 쿼리 및 검색 입력창에 붙여넣을 수 있음.
- 출력을 파이프로 보낼 때 색상을 올바르게 다운샘플링함.
뷰어 개선
%는 일치하는 괄호로 이동함.r은 파일을 다시 불러옴.Ctrl-E와Ctrl-Y는 뷰를 한 줄씩 스크롤함.- 미리보기 창에서 강조 표시와 탐색 키를 사용해 검색할 수 있음.
- 객체와 배열의 크기를 키 옆에 표시함.
- 도움말 화면을 범주별로 구성함.
--no-tui는 출력을 표시하고 뷰어를 열지 않음.
새로운 함수
sortKeys는 객체 키를 재귀적으로 정렬함.del(key)는 객체에서 키를 제거하거나 배열에서 인덱스를 제거함. 예를 들어.users map(del('password'))를 사용할 수 있음.exit(code)는 지정한 종료 코드를 반환하며fx를 종료함.
안정성
- 자바스크립트 엔진이 더 이상
fx를 충돌시키지 않음. 쿼리 안에서 발생한 패닉은 오류로 보고하며, 시간 제한은 미리보기에만 적용함. - 삭제된 노드나 실행 중인 검색과 관련된 문제를 포함해 뷰어가 충돌하거나 멈출 수 있는 여러 문제를 수정함.
- 표준 입력을 읽은 뒤 Windows TTY 원시 모드를 복원함.
- UTF-8 BOM을 처리함.
$HOME이 설정되지 않은 환경에서도 작동함.- 비 TTY 환경에서 파일 인수를 올바르게 감지함.
- 미리보기와 출력에서 문자열 이스케이프를 디코딩함.
숨겨진 던전
fx --dungeon으로 JSON 뷰어 안에 숨겨진 로그라이크 던전을 실행할 수 있음.
호환성을 깨는 변경
Esc는 더 이상 종료 키가 아니며,q또는Ctrl-C를 사용해야 함.- 편집기에서 열던
v키를 제거함.:w !vim -또는 표준 입력을 읽는 다른 편집기를 사용할 수 있음. dig기능을 제거했으며, 대화형 쿼리와 탭 자동 완성으로 대체함.- Game of Life 기능을 제거하고 던전으로 대체함.
- 입력이 비어 있으면
fx가 0이 아닌 종료 상태를 반환함. - JSON이 아닌 입력 파일에 대한 저장을 거부하므로 YAML 또는 XML 파일을 JSON으로 덮어쓰지 않음.
문서와 변경 사항
- 전체 문서: fx.wtf
- 전체 변경 내역:
39.2.0...40.0.0 - 릴리스 버전은
40.0.0이며, 게시 시각은 10월 5일 16:01임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요