vi
Source: Dev.to
Popularity
2.7 백만 명이 텍스트 편집기를 종료하는 방법을 배우기 위해 Stack Overflow를 방문했으며, 방문자 20 000명당 한 명이었습니다. 피크 시간대에는 매시간 약 80명이 실수로 연 프로그램에 갇히게 됩니다.
Design Constraints
컴퓨팅에서 가장 두려워하는 도구는 동시에 가장 우아합니다. 당시 버클리 대학원생이던 빌 조이는 ADM‑3A 터미널에서 300 baud 모뎀을 통해 코드를 작성했습니다. 화면이 그려지는 속도가 생각보다 느리고, 각 키 입력마다 시간이 소요되며, 낭비되는 문자 하나하나가 눈에 보이는 지연을 초래했습니다.
이러한 제약에 대처하기 위해 조이는 아무것도 낭비하지 않는 편집기를 만들었습니다:
- 메뉴 없음.
- 마우스 없음.
- 크롬 없음.
- 모든 키가 동작한다.
Escape 키는 오늘날 Tab 키가 차지하고 있는 위치에 있습니다. ADM‑3A에서는 한 손가락 거리였기 때문입니다. hjkl이 이동을 담당하는 이유는 그 키들에 화살표가 인쇄되어 있었기 때문이며, :가 명령 모드 진입에 쓰이는 이유는 해당 키보드에서 콜론 입력에 Shift가 필요 없었기 때문입니다.
Vi는 편안함을 위해 설계된 것이 아니라 300 baud 모뎀을 위해 설계되었습니다. 이러한 제약이 편집기를 정의하는 문법을 만들어냈습니다.
Command Grammar
Vi는 단순한 편집기가 아니라 하나의 언어입니다.
d3w # delete three words
ciw # change inner word
yy # yank (copy) this line
p # put (paste) it back
모든 명령은 동사, 선택적인 횟수, 그리고 명사로 구성됩니다. 동사 10개와 명사 10개만 익히면 100개의 명령을 만들 수 있고, 각각 20개씩 익히면 400개의 명령을 만들 수 있습니다.
다른 편집기는 이런 방식으로 동작하지 않습니다. 대부분의 편집기는 Ctrl+C, Ctrl+V, Ctrl+Shift+K와 같은 고정된 키 조합에 동작을 매핑합니다. 이러한 바인딩은 외우는 것이지 이해하는 것이 아닙니다. Vi는 문법을 제공하고, 이전에 한 번도 써보지 않은 문장을 스스로 만들 수 있게 해줍니다.
세 살 난 아이가 가능한 모든 조합을 외우지 않고 동사와 명사로 문장을 만드는 것처럼—그것이 vi의 작동 방식입니다. 언어학자라면 아마도 승인할 것입니다.
Legacy and Influence
Vi는 POSIX에 명시되어 있으며 모든 Unix 시스템에 기본으로 포함됩니다: 모든 BSD 서버, 모든 Linux 배포판, 그리고 모든 macOS 설치에 포함됩니다. 1976년부터 존재해 온, 50년간 생산에 사용된 도구입니다.
Bram Moolenaar는 vi를 기반으로 1991년에 Vim을 만들었습니다. 그는 32년 동안 이를 유지보수했으며 “charityware”라는 용어를 만들었고, 사용자들에게 소프트웨어 비용 대신 우간다 고아들을 위한 기부를 요청했습니다. 그는 2023년 8월 3일, 향년 62세에 사망했습니다. 그가 만든 편집기는 역사상 어느 텍스트 편집기보다 더 많은 기계에서 실행됩니다.
- Vim: 약 380 000줄의 C 코드.
- VS Code: Electron, Chromium, Node.js, 수백 메가바이트.
두 편집기 모두 텍스트를 편집하지만, 1976년의 제약이 만든 편집 문법은 현대 편집기들이 따라잡지 못했습니다. 기능이 부족해서가 아니라 언어가 부족해서입니다.
Vi는 제약을 위해 설계된 것이 제약 자체보다 오래 지속되는 도구를 만든다는 50년 된 증거입니다.