본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 06. 16. 16:37

Show HN: Elecxzy – Electron 기반의 가볍고 Lisp가 없는 Emacs 스타일 에디터

요약

Electron 기반의 가볍고 현대적인 Emacs 스타일 텍스트 에디터인 Elecxzy를 소개합니다. Lisp 엔진 대신 내장된 MCP 서버를 통해 AI 어시스턴트와의 직접적인 상호작용을 지원하는 것이 특징입니다.

핵심 포인트

  • Electron, TypeScript, Canvas API 기반의 현대적 아키텍처
  • 내장 MCP 서버를 통한 AI 기반 편집 기능 지원
  • RB-Tree 기반 피스 테이블을 활용한 효율적인 버퍼 관리
  • Emacs 키 바인딩 및 정적 JSON 설정 시스템 제공
<p align="center"> <img src="./public/elecxzy_repo_card.svg" width="800" alt="elecxzy - 차세대 Emacs 스타일의 현대적인 에디터"> </p>

License: MIT

Zenn

X

Emacs 키 바인딩 (keybindings)을 지원하며, AI 기반 편집을 위한 내장 MCP 서버를 특징으로 하는 Lisp가 없는 텍스트 에디터입니다.

English | 日本語


<a name="english"></a>

English

elecxzy는 웹 기술 스택 (Electron) 내에서 Emacs 스타일의 편집 경험을 제공하기 위해 개발된 텍스트 에디터입니다. 내장된 Lisp 엔진은 포함되어 있지 않지만, 내장된 MCP (Model Context Protocol) 서버를 갖추고 있어 AI 어시스턴트가 에디터와 직접 상호작용하고 제어할 수 있습니다. 잘 고려된 기본 설정을 즉시 제공함으로써 광범위한 초기 설정의 필요성을 줄여주어, 바로 편집을 시작할 수 있습니다.

Download

Windows 전용

Microsoft Store

Microsoft Store를 통해 자동 업데이트가 제공됩니다. 최신 개발 빌드의 경우, 다음에서 바이너리를 다운로드할 수 있습니다:
👉 GitHub Releases

참고: 소스 저장소는 현재 비공개 상태입니다.

Architecture & Design

  • 기술 기반 (Technology Base): Electron 프레임워크를 기반으로 구축되었으며, 사용자 인터페이스(UI)에는 HTML과 CSS를, 애플리케이션 로직에는 TypeScript를 사용합니다. 시스템 수준의 작업을 처리하기 위해 메인 프로세스(Main Process)와 렌더러 프로세스(Renderer Process) 간의 IPC 통신을 활용합니다.
  • 버퍼 관리 (Buffer Management): RB-Tree (Red-Black Tree) 기반의 피스 테이블 (Piece Table)을 사용합니다. 이를 통해 효율적인 작업이 가능하며, 대용량 파일에 대해 증분 방식의 델타 기반 실행 취소(undo) 히스토리를 제공합니다.
  • 렌더링 엔진 (Rendering Engine): 커스텀 가상 렌더링 시스템을 구현합니다. 정확한 텍스트 메트릭(고정 폭 가정을 하지 않고 전각 및 반각 문자를 혼합 처리)을 위해 Canvas API를 활용하며, DOM 리플로우(reflow)를 최소화합니다.
  • IME 입력 제어 (IME Input Control): 커밋되지 않은 텍스트 상태와 포커스를 관리하기 위해 DOM 컴포지션 이벤트(composition events)를 명시적으로 처리합니다. 또한, 일본어 텍스트 입력과 Emacs 명령 실행 간의 충돌을 방지하기 위해 접두사 키(예: C-x) 이후의 IME 입력을 무시합니다.
  • 설정 시스템 (Settings System): 동적 스크립팅 엔진 대신 정적 JSON 설정 파일(config.json, color-config.json)에 의존합니다.

주요 기능 (Key Features)

  • Emacs 키 바인딩 (Emacs Keybindings): 커서 이동 (C-f, C-b, C-n, C-p), 재귀적 창 분할 (C-x 2, C-x 3), 창 크기 조절 (C-x ^, C-x }), 애니메이션이 적용된 창 레이아웃 재구성 (C-x w t로 전치, C-x w f / C-x w v로 반전, C-x w r <Right> / <Left>로 레이아웃 90도 회전, C-x w o <Right> / <Left>로 창 간 버퍼 순환), 그리고 킬 링 (kill ring) 관리 (C-w, M-w, C-y, M-y)를 포함한 핵심 동작들을 지원합니다.

  • 검색 및 치환 (Search & Replacement): 증분 검색 (C-s), 대화형 치환 (M-%), 그리고 백그라운드 OS 프로세스 (findstr / grep)를 활용한 디렉토리 전역 파일 검색 (M-x grep) 기능을 제공합니다.

  • 완성 시스템 (Completion System): 버퍼 로컬 단어 완성을 위한 dabbrev-expand (M-/) 기능을 통해 멀티바이트 문자를 추출하고 실행 취소(undo) 체인의 무결성을 유지합니다.

  • 라이브 미리보기 (Live Preview): Markdown, HTML, 일반 텍스트(텍스트의 경우 창 가장자리에서 줄 바꿈 적용)에 대한 미리보기 모드를 제공하며, 소스 버퍼의 위치를 추적하는 단방향 스크롤 동기화 기능을 특징으로 합니다.

  • 창 및 버퍼 관리 (Window & Buffer Management): 원활한 버퍼 전환 (C-x b)과 전용 버퍼 리스트 (C-x C-b)를 제공합니다. 표준 미니버퍼(minibuffer) 프롬프트 외에도 OS 네이티브 파일 및 저장 대화 상자를 활용할 수 있는 명령어를 제공합니다 (C-x M-f, C-x M-w).

  • 사이드바 파일 탐색기 (Sidebar File Explorer (Filer)): 창의 왼쪽에 표시되는 전용 파일 관리자 (C-x d / C-c d)입니다. 빠른 파일 미리보기 (l / Right)와 Windows 시스템 드라이브를 포함한 디렉토리 탐색 (r, u) 기능을 제공합니다.

  • 사이드바 유틸리티 스위트 (Sidebar Utility Suite): 편집을 돕기 위해 창의 오른쪽에 표시되는 여러 개의 전용 사이드바입니다:

    • 워크스페이스 사이드바 (Workspace Sidebar) (C-c w, C-, 또는 M-x toggle-workspace-sidebar): 전용 워크스페이스에서 여러 폴더를 관리하며, VS Code와 호환되는 .code-workspace 파일을 원활하게 열고 저장할 수 있습니다.
    • 아웃라인 뷰 (Outline View) (C-c o): Markdown 및 HTML의 헤딩(heading)을 실시간 동기화와 함께 계층 구조로 표시합니다.
  • Kill Ring 사이드바 (Kill Ring Sidebar) (C-c y 또는 M-x browse-kill-ring): 킬 링 (Kill Ring, 클립보드 히스토리)을 탐색하고 관리합니다.

    • 레지스터 사이드바 (Register Sidebar) (C-c r 또는 M-x browse-registers): 영구 레지스터 (텍스트, 포인트(points), 윈도우 레이아웃)를 검사하고 선택합니다.
    • 실행 취소 히스토리 사이드바 (Undo History Sidebar) (C-c u 또는 M-x browse-undo-history): 텍스트 미리보기를 통해 활성 버퍼의 실행 취소 (Undo) 히스토리를 탐색합니다. 항목을 선택하면 버퍼가 해당 시점으로 되돌아가며, 이는 단일 재실행 (Redo) 트랜잭션으로 기록됩니다 (Office 스타일).
    • 재생 히스토리 (Playback History) (M-x playback-history): 버퍼의 편집 히스토리를 애니메이션으로 보여줍니다. 가장 오래된 상태로 되감은 뒤 현재 상태까지 단계별로 재실행 (Redo)합니다. 접두사 인자 (Prefix arguments)로 속도를 제어할 수 있습니다 (C-u = 10ms, C-u C-u = 1ms, C-u <n> = <n> ms, 최대 1000ms). 아무 키나 클릭하면 중단되며, 즉시 최신 상태로 점프합니다. 읽기 전용 보호 기능이 애니메이션 도중 자동 저장 (Auto-save), MCP 쓰기, 외부 드래그 앤 드롭으로부터 버퍼를 보호하므로 중간 상태가 디스크에 저장되지 않습니다.
    • 최근 파일 사이드바 (Recent Files Sidebar) (C-c c 또는 M-x browse-recent-files): 경로 미리보기를 통해 최근 사용한 파일을 빠르게 탐색하고 엽니다. m을 누르면 포커스된 파일을 고정 (Pin) / 해제 (Unpin)할 수 있습니다.
    • 북마크 사이드바 (Bookmark Sidebar) (C-c b / C-x r l 또는 M-x browse-bookmarks): 장기적인 빠른 액세스를 위해 파일을 고정합니다. 최근 파일 (Recent Files) / 파일러 (Filer) / 워크스페이스 (Workspace) 사이드바의 파일에서 m을 누르면 북마크에 추가되고, 북마크 사이드바 내부에서 m을 누르면 제거됩니다. 북마크는 config.json에 저장됩니다. C-x r m (bookmark-set)을 사용하여 현재 열려 있는 파일을 고정하거나 (이미 북마크된 경우 메시지와 함께 동작 안 함), M-x bookmark-toggle로 토글할 수 있습니다. 키 바인딩은 Emacs bookmark.el 관례를 따릅니다.
    • 설정 사이드바 (Settings Sidebar) (C-c s, C-. 또는 M-x open-config): 폰트, 테마, 줄 번호와 같은 에디터 설정을 관리합니다.
  • 터미널 통합 (Terminal Integration): Windows 환경에서 내장된 대화형 셸 버퍼 (M-x shell)를 제공합니다.

  • 메이저 모드 (Major Modes): 파일 확장자를 기반으로 주요 언어에 대한 자동 언어 감지 및 구문 강조 (Syntax Highlighting)를 지원합니다.

  • 미니버퍼 완성 (Minibuffer Completion): 미니버퍼 내에서 M-x 명령, 파일 및 디렉토리에 대한 대화형 완성 기능을 제공합니다.

  • 비텍스트 파일 가져오기 (Non-text File Import): PDF, Word 문서 (.docx), Excel (.xlsx) 파일에서 일반 텍스트를 자동으로 추출하여 가져옵니다. Excel 문서는 시트 헤더와 함께 파싱되며 데이터는 깔끔한 TSV (Tab-Separated Values) 레이아웃으로 포맷팅됩니다. 참고: 가져온 파일은 원본 바이너리 데이터가 덮어쓰여지는 것을 방지하기 위해 **읽기 전용 모드 (Read-only mode)**로 열립니다. 추출된 텍스트를 새 파일로 저장하려면 '다른 이름으로 저장' (C-x C-w 또는 C-x M-w)을 사용하세요. 시스템 안정성을 보장하기 위해 이러한 형식에는 50MB 크기 제한이 적용됩니다.

  • 파일 작업 및 인코딩 (File Operations & Encoding): 주기적인 자동 저장, 최근 파일 목록 (M-x recentf-open-files), 자동 UTF-8 승격 (Promotion), 그리고 네이티브 버퍼 출력 (M-x print-buffer) 기능을 포함합니다.

  • 텍스트 포맷팅 (단락 채우기, Fill Paragraph): M-q (fill-paragraph) 명령을 통해 설정 가능한 너비 (set-wrap-column)를 기준으로 단락을 재포맷하고 하드 랩 (Hard-wrap)하여, 일본어와 영어 텍스트 모두에 최적화된 레이아웃을 제공합니다.

  • 지속성 레지스터 (Persistent Registers): Emacs 스타일의 레지스터를 사용하여 세션 간에 텍스트, 커서 위치 또는 **윈도우 레이아웃 (Window layouts)**을 저장하고 불러올 수 있습니다. 명령에는 C-x r s (레지스터로 복사), C-x r i (삽입), C-x r SPC (포인트 저장), C-x r j (점프 / 레이아웃 복구), C-x r w (윈도우 레이아웃 저장)가 포함됩니다. 모든 데이터는 브라우저의 로컬 스토리지 (Local storage)에 유지됩니다. 레스탱글 마크 (Rectangle mark) 모드일 때는 특수한 '사각형 (Rectangle)' 타입 저장을 지원합니다.

  • 사각형 편집 (Rectangle Editing): 열(Column) 단위의 대량 편집을 위한 강화된 사각형 지원 기능을 제공합니다. C-x SPC로 사각형 마크 모드에 진입하여 C-x r k (kill), M-x kill-ring-save (copy), C-y (yank)와 같은 작업을 수행할 수 있습니다. 에디터는 킬 링 (Kill ring)과 레지스터 내의 사각형 데이터를 지능적으로 감지합니다.

  • Full Unicode Support (전체 유니코드 지원): 에디터 전반에 걸쳐 서로게이트 페어 (surrogate pairs, 이모지 등)를 견고하게 처리하여, 편집 또는 탐색 중에 문자가 분리되지 않도록 보장합니다.

  • Accurate Word Navigation (정확한 단어 탐색): 네이티브 Intl.Segmenter API를 활용하여 정밀한 단어 경계 감지를 수행합니다. CJK (중국어, 일본어, 한국어) 텍스트 전반에 걸쳐 자연스러운 커서 이동(M-f, M-b 등)을 제공하며, 추가 설정 없이도 서브워드 (subword, 예: snake_case) 탐색을 기본적으로 지원합니다.

  • Avy Jump Navigation (C-'): 타겟 레이블을 사용하여 가시적인 뷰포트 내에서 커서를 빠르게 이동합니다. C-'를 누른 후 문자를 입력하면 일치하는 위치에 레이블이 겹쳐서 나타나며, 해당 레이블을 입력하여 점프할 수 있습니다.

  • Cursor Visual Effects (VFX, 커서 시각 효과): 커서 이동에 역동적인 시각적 화려함을 더합니다. 9가지의 독특한 스타일(

  • MCP 서버 통합 (MCP Server Integration): Model Context Protocol(MCP) 서버 역할을 수행하여, AI 비서(Google Antigravity, Claude Desktop/Code 등)가 ELECXZY_MCP_MODE 환경 변수를 통해 버퍼를 읽거나 편집하고 에디터를 직접 제어할 수 있게 합니다.

  • 사용자 지정 키 바인딩 (keybinds.json): 기본 키 바인딩을 재구축하지 않고도 덮어쓰거나 제거할 수 있습니다. config.json 옆에 keybinds.json 파일을 추가하면 됩니다 (언제든지 M-x show-keybinds-config로 열기). Emacs 스타일 표기법이 지원됩니다 (\ ext{C-} = Ctrl, ext{M-} = Alt, 공백으로 구분된 토큰은 `

[!IMPORTANT]
MCP 서버를 시작하기 전에, Settings → MCP (또는 config.jsonmcpAllowedDirectories)에서 **허용된 저장 디렉토리 (Allowed Save Directories)**를 설정하십시오. MCP save_file 도구는 이 디렉토리들 중 하나에 속한 경로에만 파일을 쓸 수 있습니다. 만약 목록이 비어 있거나 존재하지 않는 경로가 포함되어 있다면, M-x mcp-start 실행 시 에코 라인 (echo-line) 메시지와 함께 중단됩니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0