sim editor · Rust · Linux 및 macOS

차세대 Vim. 숨은 것을 보여 줍니다.

sim은 차세대 Vim입니다. Rust로 처음부터 작성했고, Vim의 모달 편집과 핵심 키를 그대로 유지합니다.

모드라인을 읽지 않고, 플러그인을 불러오지 않으며, 네트워크 연결도 열지 않습니다. 그리고 보통은 숨어 있는 것을 화면에 드러냅니다. 보이지 않는 문자, 에디터 밖에서 일어난 쓰기, 코드를 실행하게 될 저장소가 그것입니다.

플러그인 없음. 모드라인 없음. 네트워크 없음.

무료 오픈 소스(MIT OR Apache-2.0)입니다. Homebrew로 설치하거나 소스에서 빌드하세요. 릴리스 노트: v0.2.0

notes/access.py를 연 sim. 오른쪽에서 왼쪽 방향 재정의 문자와 격리 문자가 있는 줄에서, 그 문자들이 마젠타 블록 위에 <U+202E>와 <U+2066>으로 표시되어 있습니다. 줄 끝 공백은 점 세 개로, 줄 바꿈 없는 공백은 작은 상자로 표시됩니다.
한 줄에 실제 U+202E와 문자 그대로의 텍스트 <U+202E>가 함께 있습니다. 마젠타 블록이 붙는 것은 실제 문자뿐입니다. 그 아래에는 Trojan Source 스타일의 줄, 줄 끝 공백(·), 줄 바꿈 없는 공백(⍽)이 있습니다. 트리에는 git 상태가, 거터에는 HEAD 대비 변경이 표시됩니다.

하나의 규칙: 숨은 것을 보여 준다

에디터를 노린 공격은 대부분 에디터가 파일을 실제와 다른 모습으로 보여 주기 때문에 성립합니다. sim의 외관(depth, 안개, 빨강과 초록의 diff, 마젠타 경고 배지)은 단 하나의 일, 곧 숨은 것을 눈에 보이게 하려고 존재합니다. 색에는 고정된 규칙이 있어서, 같은 색은 언제나 같은 뜻입니다.

색마다 담긴 뜻

  • 회색무채색 회색과 글자 굵기는 구조를 나타냅니다. 본문, 숫자, 아이콘, 테두리입니다.
  • 파랑유일한 강조색은 “여기서 조작한다”는 뜻입니다. 모드, 지금 보고 있는 탭, 검색 일치, 링크에 씁니다.
  • 초록, 호박색, 빨강초록, 호박색, 빨강은 변경을 뜻하며, 다른 뜻으로는 쓰지 않습니다.
  • 마젠타마젠타는 숨어 있거나 위험한 것만을 뜻합니다. 본래 모습으로 표시되지 않는 문자, 안전을 위해 건너뛴 git이 그렇습니다.

sim이 화면에 드러내는 것

파일과 저장소가 숨기는 다섯 가지를, sim은 모두 보여 줍니다.

터미널 속의 sim

외부 쓰기 뒤의 store.py를 보여 주는 sim. 바뀐 두 줄은 초록 배경이고, 위쪽 테두리에는 초록 배지 “2 changes on disk”가 달려 있고, 탭에는 ↯가 표시되어 있습니다.
다른 프로세스가 열어 둔 파일을 다시 쓴 장면입니다. 바뀐 줄에 표시가 붙고, 상자에는 “2 changes on disk”라고 나오며, 탭에는 ↯가 표시됩니다. 버퍼의 내용은 하나도 잃지 않았습니다.
프로젝트 트리 위에 떠 있는 “Live grep” 창. 일치하는 줄이 파일별로 묶여 나열되고, 아래에는 구문 색이 적용된 미리 보기가 있습니다.
Ctrl-f는 입력하는 동안 모든 파일의 내용을 검색하고, 선택한 줄을 미리 보여 줍니다.
README.md를 연 sim. 띠 위의 제목, 울타리가 있는 코드 블록, 세로선으로 정렬한 표, 작업 목록, 인용 막대가 있다. 커서가 있는 첫 줄은 입력한 그대로 보인다.
읽기 보기의 README입니다. 제목, 표시 폭에 맞춰 정렬한 표, 작업 목록, 인용이 읽히는 모습대로 그려집니다. 커서가 있는 줄은 파일 그대로입니다.
core.sshCommand가 설정된 저장소에서 실행한 sim. 트리 상자의 윗변에 마젠타 배지 git not run이 있고, 상태 줄에는 git skipped: core.sshcommand in .git/config could run a command라고 표시되어 있다.
.git/config에 core.sshCommand가 설정된 저장소에서 sim은 git을 실행하지 않습니다. 트리의 상자에 git not run이 표시되고, 상태 줄에 원인이 된 키와 파일이 표시됩니다.

빠릅니다. 주장이 아니라 측정입니다.

프로젝트 자체 벤치마크(릴리스 빌드, 100,000줄 파일, 패널을 연 채 하이라이트를 켠 상태)에서 키 입력 하나는 p99 기준 1 ms 미만입니다. 파일이 10만 개인 저장소에서는 파일 목록을 읽기 전에 첫 프레임을 그리며, 실측값은 1.8~8.7 ms입니다.

프로젝트가 AMD Ryzen 9 9950X에서 측정한 값입니다(사양서의 SPEED-1, SPEED-2). 사용 환경에 따라 달라집니다.

Vim, Neovim, Helix와 맞대어 보기

출처를 단 비교표입니다. 플러그인, 모드라인, 프로젝트 설정, 숨은 문자, 외부 쓰기를 다루며, 다른 에디터가 아직은 더 잘하는 부분도 적었습니다.

비교 읽기

로드맵

예정된 항목으로, 아직 제공되지 않았습니다. 여기 있는 것 중 오늘 쓸 수 있는 것은 없습니다.

  • 매크로

    예정

  • 클립보드 연동

    예정

  • 샌드박스 안에서 실행되는 언어 서버

    예정

  • 진짜 깊이감을 가진 GUI

    예정

  • 더 많은 설치 방법

    예정

예정된 기능 모두 보기

차세대 Vim 실행하기

Homebrew로 설치하거나 소스에서 빌드하세요. AUR 및 crates.io 패키지는 곧 공개됩니다.