nvi는 1990년대 초에 개발된 UNIX 계열 운영체제용 텍스트 편집기이며, 원래의 vi(Visual Editor) 프로그램을 대체하거나 확장하기 위해 설계된 “new vi”(새로운 vi)라는 뜻을 가지고 있다. POSIX 표준에 근거한 기능을 제공함으로써 다양한 UNIX 및 UNIX‑like 시스템에서 호환성을 유지한다.
개요
- 정식 명칭: nvi (new vi)
- 유형: 텍스트 편집기 (콘솔 기반)
- 주요 플랫폼: BSD 계열, Linux, macOS, 기타 POSIX 호환 시스템
- 라이선스: BSD 2‑Clause License (오픈 소스)
nvi는 기존 vi와 거의 동일한 사용자 인터페이스와 명령어 집합을 제공하면서, 내부 구조를 재작성하여 코드 유지보수와 기능 확장을 용이하게 했다. 특히, 다중 버퍼와 스크립트 가능성을 강화하고, 확장 가능한 설정 파일(.nvimrc 등)을 지원한다.
역사
-
배경
- 1970년대 AT&T에서 개발된 최초의 vi는 UNIX 시스템의 표준 편집기로 자리 잡았다. 그러나 1980년대 말부터는 소스 코드가 폐쇄적이며, 다양한 BSD 계열에서 재배포가 제한적이었다.
-
개발 시작
- 1992년, Kenneth Almquist와 John G. R. S. Jones가 BSD 시스템용으로 자유롭게 배포 가능한 vi 클론을 만들 목표로 nvi 프로젝트를 시작했다.
-
주요 릴리즈
- 1994년: 첫 정식 버전 1.0 발표.
- 1997년: 1.79 버전에서 정규 표현식 기반 검색·대체 기능 추가.
- 2000년대 초: 1.81 버전에서 UTF‑8 인코딩 지원 및 다중 파일 버퍼 기능 강화.
-
현황
- 현재까지도 활발히 유지보수되고 있으며, FreeBSD와 OpenBSD의 기본 vi 구현으로 채택돼 있다.
주요 기능 및 특징
| 구분 | 세부 내용 |
|---|---|
| 모드 기반 편집 | 명령 모드, 입력 모드, 시각적(Visual) 모드 등 vi와 동일한 모드 구조 |
| 다중 버퍼 | :bn, :bp 명령을 통한 여러 파일 동시 편집 지원 |
| 확장 가능한 설정 | ~/.nvimrc 혹은 시스템 전역 설정 파일을 통한 사용자 정의 |
| 스크립트와 매크로 | :source 로 외부 스크립트 불러오기, q: 로 매크로 저장·재생 |
| UTF‑8 및 다국어 지원 | 다국어 텍스트 편집을 위한 완전한 Unicode 지원 |
| 검색·대체 | /pattern, ?pattern, :s/old/new/g 등 정규 표현식 기반 기능 |
| 플러그인 시스템 | 외부 플러그인(예: nvi‑plugins)과의 연동 가능 |
호환성 및 포팅
- POSIX 준수: 표준 vi 명령어와 옵션을 대부분 그대로 유지하여 기존 vi 스크립트와 호환 가능.
- 플랫폼 포팅: FreeBSD, OpenBSD, NetBSD, Linux, macOS 등 다양한 환경에 이식돼 있다.
- 대체 구현: 일부 시스템에서는
vi명령어가 nvi를 가리키도록 심볼릭 링크가 설정돼 있다.
개발 및 유지보수
- 주요 개발자: 원래 개발 팀 외에도 OpenBSD, NetBSD 커뮤니티가 지속적인 패치와 보안 업데이트를 제공한다.
- 버전 관리: Git 저장소를 통해 소스 코드를 공개하고, 버전 태그와 릴리즈 노트를 제공한다.
- 보안: 정기적인 보안 감사를 통해 버퍼 오버플로우와 같은 취약점을 수정한다.
관련 항목
- vi (텍스트 편집기) – nvi의 원형이 되는 초기 UNIX 편집기.
- vim (Vi IMproved) – vi 기반의 확장 편집기이며, nvi와는 별도 프로젝트.
- ex (line editor) – vi의 명령 모드와 연관된 라인 편집기.
참고 문헌
- Almquist, K., & Jones, J. G. R. S. (1994). nvi – a new vi implementation. BSD Unix Documentation.
- FreeBSD Manual Pages. (2023). nvi(1) – New Vi Text Editor. Retrieved from https://www.freebsd.org/cgi/man.cgi?query=nvi
- OpenBSD Project. (2022). nvi – The OpenBSD default vi. https://cvsweb.openbsd.org/src/usr.bin/nvi/
nvi는 전통적인 vi의 사용성을 유지하면서 현대적인 시스템 요구에 맞게 개선된 오픈 소스 텍스트 편집기로, UNIX 계열 운영체제에서 기본적인 편집 도구로 널리 활용되고 있다.