Vi
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
vi는 1970년대 빌 조이가 Lear-Siegler ADM3A 터미널에서 개발한 텍스트 편집기이다. ex 라인 에디터를 기반으로 하며, 명령 모드와 입력 모드를 사용하여 효율적인 텍스트 편집을 지원한다. vi는 마우스와 커서 키 없이 키보드만으로 조작하도록 설계되었으며, 이러한 특징은 숙련된 사용자에게 빠른 작업 속도를 제공한다. 유닉스 시스템의 표준 편집기로 자리 잡았으며, Vim, Elvis, nvi 등 다양한 호환 편집기가 존재한다. vi는 POSIX 표준에 포함되어 있으며, 현재까지도 많은 텍스트 편집기와 개발 도구에 영향을 미치고 있다.
더 읽어볼만한 페이지
- Vi - Vim
Vim은 브람 물라나르가 개발하여 1991년 처음 공개한 텍스트 편집기로, vi 편집기의 확장판이며 프로그램 소스 코드 편집에 유용한 다양한 기능을 제공한다. - Vi - 편집기 전쟁
편집기 전쟁은 리눅스와 유닉스 환경에서 널리 쓰이는 텍스트 편집기인 Emacs와 vi 사이의 설계 철학, 기능, 사용자 경험 차이로 인해 발생한 오랜 논쟁을 의미한다. - 콘솔 애플리케이션 - MS-DOS 편집기
MS-DOS 편집기는 MS-DOS 운영 체제에 포함된 텍스트 편집기로, 다중 문서 인터페이스, 이진 파일 모드, 마우스 지원 기능을 제공하며, 다양한 버전으로 출시되었다. - 콘솔 애플리케이션 - Top (소프트웨어)
top은 시스템의 실시간 상태를 보여주는 프로세스 모니터링 소프트웨어 유틸리티로, CPU 사용률, 메모리 사용량, 실행 중인 프로세스 목록 등 다양한 정보를 제공한다. - 유닉스 문서 편집기 - GNU 이맥스
GNU 이맥스는 1984년 리처드 스톨먼이 개발한 자유 소프트웨어 텍스트 편집기로, C 언어와 Emacs Lisp를 사용하며, 다양한 기능과 확장성을 통해 텍스트 편집, 프로그래밍, 파일 관리 등 다양한 용도로 사용된다. - 유닉스 문서 편집기 - XEmacs
XEmacs는 1980년대 후반 GNU Emacs에서 분기되어 사용자 정의 기능, 다양한 운영체제 지원, 자체 패키지 관리 시스템을 갖춘 텍스트 편집기였으나, 개발 속도 저하와 GNU Emacs와의 호환성 문제로 2015년 이후 유지 관리 모드로 전환되었다.
| Vi - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 개발자 | 빌 조이 |
| 출시일 | 1976년 |
| 종류 | 문서 편집기 |
| 기술 정보 | |
| 운영 체제 | 유닉스 유닉스 계열 |
| 플랫폼 | 크로스 플랫폼 |
| 프로그래밍 언어 | C |
| 라이선스 | |
| 라이선스 종류 | BSD-4-Clause CDDL |
2. 역사
빌 조이는 캘리포니아 대학교 버클리에서 버클리 소프트웨어 배포판(BSD) 작업을 하며 파스칼 컴파일러 개발을 돕기 위해 텍스트 편집기를 만들기 시작했다. 처음에는 ex라는 이름의 라인 에디터였고, 파스칼 소스 코드에 포함되어 독립적인 소프트웨어로 알려지지 않았다. 이후 캘리포니아 대학교 버클리에 Lear-Siegler ADM-3A 터미널이 도입되면서, 빌 조이는 이를 기반으로 시각적 편집 기능을 추가하여 현재의 vi 편집기를 개발했다. 이 ADM-3A 터미널은 Esc 키가 현재의 Tab 키 위치에 있어 모드 전환이 용이했고, 별도의 화살표 키가 없어 H, J, K, L 키를 커서 이동에 사용하도록 설계된 점이 vi의 특징적인 인터페이스에 영향을 주었다.
2. 1. 개발 배경

vi는 빌 조이가 캘리포니아 대학교 버클리(UC 버클리) 대학원생 시절 개발한 텍스트 편집기이다. 개발 당시 조이는 버클리 소프트웨어 배포판(BSD)의 초기 버전을 공개하면서 함께 포함할 파스칼 컴파일러 작업을 더 효율적으로 하기 위해 편집기를 만들었다.[3]
vi의 개발은 ed라는 초기 유닉스 라인 에디터에서 시작되었다. ed는 전신타자기 환경에 맞춰 개발되어 디스플레이 터미널 환경에서는 사용하기 불편했다. 조지 쿨로리스(George Coulouris)는 ed의 이런 점을 개선하여 1976년 런던 퀸 메리 대학교에서 'em'(editor for mortals, 필멸자를 위한 편집기)이라는 시각적 라인 편집기를 개발했다.[8][9] em은 유닉스에서 터미널의 모든 키 입력을 프로그램이 직접 처리하는 "원시 모드"를 활용한 초기 프로그램 중 하나였다. 쿨로리스가 1976년 여름 UC 버클리를 방문했을 때 em을 소개했고, 빌 조이는 이에 깊은 인상을 받았다.[9]
em에서 영감을 받은[3] 빌 조이는 동료 대학원생이었던 척 헤일리와 함께 em의 코드를 가져와 'en'이라는 편집기를 만들었고,[3][10] 이를 확장하여 ex 버전 0.1을 개발했다.[3] 이후 브루스 엥글라르의 제안으로[11] 조이는 1977년 6월부터 10월까지 ex에 전체 화면 시각 모드(visual mode)를 추가하는 작업을 진행했고,[12] 이것이 바로 vi가 되었다.[13] vi와 ex는 코드를 공유하며, vi는 ex에 시각적 편집 기능을 더한 실행 파일이다.[13] 'vi'라는 이름은 ex에서 시각 모드로 전환하는 명령어 'vi'('visual'의 약어)에서 유래했다.[13][14]
vi의 독특한 인터페이스는 당시 조이가 사용했던 Lear Siegler ADM-3A 터미널의 영향을 많이 받았다. 이 터미널의 키보드는 Esc 키가 현재의 IBM PC 키보드에서 Tab 키가 있는 위치에 있었다. 이 키보드 배열 덕분에 Esc 키 사용이 편리하여 vi의 모드 전환(명령 모드와 입력 모드)에 이 키를 사용하게 되었다. 또한 ADM-3A에는 별도의 화살표 키가 없었고, 대신 키보드의 H, J, K, L 키에 화살표가 새겨져 있어 이 키들을 커서 이동에 사용하게 되었다.[10]
빌 조이는 vi 개발 당시 300~1200 보드의 느린 모뎀을 사용했는데, 이 환경에서 화면 표시가 느려도 생산성을 유지하기 위해 간결한 단일 문자 명령어를 사용하고, 화면에 표시되기 전에 미리 명령을 입력할 수 있도록 설계했다고 설명했다.[10] 또한, 조이는 Xerox PARC에서 개발된 브라보 편집기의 매뉴얼을 보고 화면 편집 모드에 대한 많은 아이디어, 특히 마지막 명령을 반복하는 점(.) 명령 등을 가져왔다고 밝혔다.[3] 정규 표현식 확장 기능 등은 토론토 버전 ed 매뉴얼에서 가져왔다고 언급했다.[3]
vi는 라인 에디터인 ex를 기반으로 만들어졌기 때문에 그 특징을 많이 물려받았다. 특정 행을 찾아 편집하고 저장하는 라인 에디터의 기본 작동 방식 위에 시각적인 화면 이동과 편집 기능을 덧붙인 형태이다. 이 때문에 초기 상태에서는 키보드 입력이 텍스트로 바로 입력되지 않고 명령으로 해석되는 '모드' 개념을 가지게 되었으며, 이는 WYSIWYG 방식에 익숙한 사용자들에게는 다소 생소하게 느껴질 수 있다.
2. 2. 발전 과정
vi는 빌 조이가 캘리포니아 대학교 버클리(UC Berkeley)에서 파스칼 컴파일러를 개발하면서 편의를 위해 만든 텍스트 편집기이다. 처음에는 그가 개발하던 파스칼 소스 코드에 포함되어 있어 단독 소프트웨어로 인지되지 않았고, 당시에는 라인 에디터인 ex 형태였다. 이후 캘리포니아 대학교 버클리에 Lear-Siegler ADM-3A 단말기가 도입된 것을 계기로, 빌 조이가 이를 기반으로 현재와 같은 화면 편집기(screen editor) 형태인 vi를 개발했다. ADM-3A 단말기의 키보드는 Esc 키가 현재 일반적으로 사용되는 키보드의 Tab 키 위치에 있어 모드 전환이 용이했다. 또한 화살표 키가 없었기 때문에 H, J, K, L 키를 사용하여 커서를 이동하도록 설계되었다.
빌 조이는 1978년 3월 첫 BSD 유닉스 릴리스를 배포하면서 ex 1.1 버전(1978년 2월 1일자)을 포함시켜 UC 버클리 외부 사용자들에게 처음 공개했다.[16] 이 릴리스부터 BSD 유닉스 시스템에 포함된 편집기는 ed와 ex뿐이었다. 빌 조이는 1984년 인터뷰에서 vi의 성공 요인 중 하나로, Emacs 같은 다른 편집기들이 수백 달러에 달하는 고가였던 반면 vi는 무료로 번들 제공되었다는 점을 꼽았다.[3]
대부분의 ex 사용자들이 시각 모드(visual mode)에서 시간을 보내는 것을 보고, 빌 조이는 1979년 5월 두 번째 BSD 릴리스(Second Berkeley Software Distribution)에 포함된 ex 2.0부터 vi 명령어를 실행하면 ex가 자동으로 시각 모드로 시작되도록 하드 링크를 설정했다.[17] 따라서 vi는 ex의 단순한 진화가 아니라, ex 자체의 다른 인터페이스였던 셈이다.
빌 조이에 따르면 ex 2.0(vi)은 PDP-11/70의 메모리에 간신히 들어갈 정도로 당시로서는 매우 큰 프로그램이었다.[18] 1979년 12월 3BSD와 함께 제공된 버전 3.1은 PDP-11의 메모리에 더 이상 들어가지 못했고,[19] 1984년에는 IBM PC용 PC/IX에서도 실행하기에 너무 큰 프로그램이었다.[20]
빌 조이는 1979년 6월 버전 2.7까지 vi의 수석 개발자로 활동했으며, 1980년 8월 버전 3.5까지 간헐적으로 기여한 후 개발에서 손을 뗐다.[11][21] 그는 vi가 모드(mode) 기반 편집기로서는 꽤 훌륭하지만, Emacs가 가진 프로그래밍 가능성이나 모드리스(modeless) 방식은 떠올리지 못했고 코드 최적화에도 능숙하지 못했다고 회고했다. 특히 화면 재표시(redisplay) 모듈 코드는 다루기 어려울 정도였다고 언급했다.[3] 또한 1978년 12월 VAX 환경에서 다중 창(multi-window) 기능을 추가하던 중, 백업이 없는 상태에서 작업하다 테이프 드라이브 고장으로 소스 코드가 엉망이 된 사건이 개발을 포기하게 된 결정적인 계기였다고 밝혔다. 이 사건이 없었다면 vi에 다중 창 기능과 프로그래밍 기능이 추가되었을 수도 있다고 덧붙였다.[3]


1979년부터 vi 개발 책임은 메리 앤 호턴이 맡게 되었다. 호턴은 화살표 키 및 기능 키 지원, 매크로 지원을 추가했으며, termcap을 terminfo로 대체하여 성능을 향상시키는 등 중요한 개선 작업을 수행했다.[11][22]
1981년 10월 버전 3.7 이후, 1982년 초 빌 조이가 썬 마이크로시스템즈로 이직하고 1983년 1월 AT&T의 UNIX System V가 vi를 채택하면서,[23] vi 코드베이스에 대한 변경은 여러 주체에 의해 분산되어 이루어졌고 서로 호환되지 않는 방향으로 발전하기 시작했다. 썬, HP, DEC, IBM과 같은 상업용 유닉스 벤더들은 각자 vi 3.7 릴리스에서 파생된 소스 코드를 기반으로 키 맵핑 조정, 암호화, 와이드 문자 지원과 같은 기능을 추가하여 자신들의 운영 체제(Solaris, HP-UX, Tru64 UNIX, AIX)에 탑재하고 유지 관리했다.
한편, 상업용 벤더들은 빌 조이의 코드베이스로 작업할 수 있었지만, 많은 사람들은 그럴 수 없었다. vi는 켄 톰슨의 ed 편집기에서 파생되었기 때문에 AT&T 소스 라이선스가 필요했고, 해당 라이선스를 가진 사람들에게만 배포될 수 있었다. 이 때문에 자유롭게 사용할 수 있는 유닉스 스타일 편집기를 원하는 사람들은 다른 대안을 찾아야 했다. 1987년 6월, Atari ST용으로 제한적인 vi 클론인 STEVIE(ST Editor for VI Enthusiasts)가 등장했고,[25][26] 1990년 1월 스티브 커켄달(Steve Kirkendall)은 STEVIE보다 더 완전하고 충실한 vi 클론을 목표로 하는 Elvis를 Usenet 뉴스그룹 comp.os.minix에 게시했다.[27] Elvis는 빠르게 관심을 얻었고, 앤드류 S. 태넨바움의 제안에 따라 Minix의 표준 vi 클론으로 채택되어 현재까지 사용되고 있다.[29]
1989년 린 졸리츠와 윌리엄 졸리츠는 BSD 유닉스를 i386 프로세서용으로 포팅하면서 자유로운 배포를 위해 AT&T 관련 코드(조이의 vi 포함)를 제외해야 했다. 이 공백을 메우기 위해 1992년 386BSD 배포판은 Elvis를 채택했다. 그러나 UC 버클리의 키스 보스틱은 4.4BSD-Lite를 위해 원본 vi와 '버그까지 호환되는(bug-compatible)' 대체품을 원했고, 커켄달의 Elvis(버전 1.8)를 기반으로 nvi를 개발하여 1994년 봄에 출시했다.[41] FreeBSD와 NetBSD는 4.4BSD-Lite2 코드베이스를 반영하면서 보스틱의 nvi로 전환했고, 현재까지 이를 사용하고 있다.[41]
Vim(Vi IMproved)은 vi를 개선하여 만들어진 대표적인 클론으로, 구문 강조, 마우스 지원, 그래픽 버전, 시각 모드(visual mode), 수많은 새로운 편집 명령어 등 원본 vi보다 훨씬 다양한 기능을 제공한다. 현재 대부분의 리눅스 배포판과 macOS에서 기본 vi 편집기로 사용되고 있다.
한편, 향상된 기능을
3. 인터페이스 및 조작법
vi는 모달 편집기로, 텍스트를 직접 입력하는 입력 모드(insert mode)와 키 입력으로 편집 명령을 수행하는 명령 모드(command mode)를 오가며 사용한다. 프로그램을 시작하면 기본적으로 명령 모드로 진입하며, 이 상태에서 키보드를 누르면 해당 키에 할당된 명령이 실행된다. 예를 들어, 특정 키는 커서 이동에 사용된다.
명령 모드에서 특정 키(예: 'i')를 누르면 입력 모드로 전환되어, 이때부터 입력하는 내용은 문서에 그대로 추가된다. 텍스트 편집 작업은 주로 이 입력 모드에서 이루어진다. 편집을 마친 후 `Esc` 키를 누르면 다시 명령 모드로 돌아와 다양한 편집 명령을 사용할 수 있다.
명령 모드에서는 ':' 키를 눌러 명령행 모드로 진입한 뒤, 파일 저장 및 종료와 관련된 명령어를 입력할 수 있다. 명령 모드에서 특정 키 조합(예: 'ZZ')으로도 저장 후 종료가 가능하다.
vi의 가장 큰 특징 중 하나는 텍스트 입력과 명령 실행 모드를 분리하여, 사용자가 키보드의 홈 로우에서 손을 떼지 않고도 대부분의 편집 작업을 터치 타이핑으로 빠르게 수행할 수 있다는 점이다. 이는 GUI 편집기처럼 마우스를 사용하거나, 다른 편집기처럼 `Ctrl`이나 `Alt` 같은 수정 키 조합에 의존하는 방식과 다르다. 예를 들어, vi에서 특정 텍스트를 수정하는 작업은 명령 모드에서 여러 키 입력을 조합하고 다시 입력 모드로 전환하는 방식으로 이루어지며, 키보드만으로 효율적인 편집이 가능하다. 마지막으로 실행한 수정 명령은 다른 위치에서 간단한 키 입력으로 반복할 수도 있다.
하지만 이러한 모드 방식은 처음 사용자에게 혼란을 줄 수 있다. 현재 어떤 모드에 있는지 명확한 시각적 피드백이 부족하여, 명령 모드에서 텍스트를 입력하려 하거나 입력 모드에서 명령어를 입력하는 실수를 하기 쉽다. 인간-컴퓨터 상호 작용 교과서에서도 이러한 모드 전환 시 피드백 부족을 vi의 대표적인 사용자 인터페이스(UI) 단점으로 지적한다.[36]
vi는 개발 당시 환경의 영향을 많이 받았다. 마우스가 보편화되기 전이었고, 개발에 사용된 ADM-3A 터미널에는 별도의 커서 키(화살표 키)도 없었다.[46] 이 때문에 모든 조작이 키보드 중심으로 이루어지며, 화면에 별도의 명령어 안내가 없어 사용자가 명령어를 외워야 한다. 이는 단점으로 보일 수 있지만, 일단 익숙해지면 매우 효율적인 편집 작업이 가능하다는 장점이 있다. 또한, 마우스나 특정 키가 없는 환경에서도 사용할 수 있다는 범용성을 가진다.
3. 1. 모드
vi는 크게 명령 모드(command mode)와 입력 모드(insert mode) 두 가지 주요 모드를 가진다. 또한, ex 편집기의 명령어를 사용하기 위한 명령행 모드(command-line mode)도 존재한다.프로그램을 시작하면 기본적으로 명령 모드로 진입한다. 이 상태에서는 키보드 입력이 텍스트로 직접 입력되는 것이 아니라, 커서 이동, 텍스트 삭제, 복사, 붙여넣기 등 다양한 편집 명령으로 해석된다. 예를 들어, 명령 모드에서 `'j'` 키는 커서를 아래로, `'k'` 키는 위로 움직이며, `'i'` 키는 입력 모드로 전환하는 명령이다.
입력 모드에서는 사용자가 입력하는 문자가 그대로 문서에 추가된다. 텍스트 편집 작업은 주로 이 모드에서 이루어진다. 입력 모드에서 `Esc` 키를 누르면 다시 명령 모드로 돌아갈 수 있다. vi는 이처럼 텍스트 입력과 명령 실행 모드를 분리함으로써, 사용자가 키보드의 홈 로우에서 손을 떼지 않고도 대부분의 편집 작업을 터치 타이핑으로 수행할 수 있게 한다. 이는 GUI 편집기에서 마우스를 사용하거나, 다른 텍스트 편집기에서 수정 키(`Ctrl`, `Alt` 등) 조합을 사용하는 것과 대조된다.


명령 모드에서 `:` 키를 누르면 화면 하단에 콜론(`:`) 프롬프트가 나타나면서 명령행 모드로 들어간다. 이 모드에서는 파일 저장(`:w`), 종료(`:q`), 저장 후 종료(`:wq`), 검색, 치환 등 ex 편집기의 강력한 명령어들을 사용할 수 있다. 명령 모드에서 `'ZZ'`를 입력해도 저장 후 종료할 수 있다.
명령 모드에서 `'v'` 키를 누르면 비주얼 모드(visual mode)로 전환되어, 방향키나 다른 이동 명령을 사용하여 텍스트 블록을 시각적으로 선택하고 복사, 삭제 등의 작업을 수행할 수 있다.
vi는 라인 에디터인 ex를 기반으로 개발되었기 때문에 그 특징을 많이 물려받았다. ex와 같은 라인 에디터는 특정 행을 찾아 편집하고 저장하는 방식으로 작동하며, 이는 내용을 화면에 보여주면서 동시에 편집하는 스크린 에디터와는 다른 방식이다. 대신 ex는 특정 패턴에 맞는 행의 내용을 바꾸거나, 외부 명령어를 이용해 텍스트를 처리하는 등 강력한 인터프리터 기능을 제공한다. (sed는 이와 유사한 방식으로 작동하는 필터형 명령어이다.) vi는 이러한 ex의 기능 위에 풀스크린 인터페이스와 독립적인 이동 명령 체계를 추가하여 사용 편의성을 높인 것이다. 따라서 vi는 스크린 에디터로 분류되지만, 설계 사상 면에서는 라인 에디터의 특징을 많이 가지고 있다.
이러한 배경 때문에 WYSIWYG 편집기에 익숙한 사용자에게는 vi의 작동 방식이 다소 독특하게 느껴질 수 있다. 특히 처음 실행했을 때 키 입력이 텍스트가 아닌 명령으로 해석되는 점이 대표적이다. 이 때문에 vi를 '모드를 가진 편집기'라고 부르는 경우가 많다. 인간-컴퓨터 상호 작용 교과서에서는 모드 전환 시 vi 편집기의 피드백 부족을 대표적인 사용자 인터페이스(UI) 단점으로 언급하기도 한다. 많은 사용자가 명령 모드에서 텍스트를 입력하거나 입력 모드에서 명령을 입력하는 실수를 범한다는 것이다.[36]
3. 2. 기본 명령어
Vi는 명령 모드(command mode)와 입력 모드(insert mode)라는 두 가지 주요 작동 모드를 가진 모달 편집기이다. 프로그램을 시작하면 기본적으로 명령 모드로 시작된다.- 모드 전환:
- 명령 모드에서 i 키를 누르면 입력 모드로 전환되어 문서 내용을 추가하거나 삭제하는 등 편집 작업을 할 수 있다.
- 입력 모드에서 Esc 키를 누르면 다시 명령 모드로 돌아온다. Vi에서는 입력 모드에서만 내용을 입력하거나 수정하는 것이 권장된다.
- 명령 모드 기본 조작:
- 커서 이동: j 키는 커서를 아래로, k 키는 위로 움직인다.
- 텍스트 수정: 예를 들어 단어를 바꾸려면 커서를 단어 시작 부분에 놓고 cw를 입력한 뒤, 바꿀 내용을 입력하고 Esc 키를 누른다. 입력된 내용은 커서 위치부터 단어 끝까지의 텍스트를 덮어쓴다.
- 명령 반복: 마지막으로 실행한 수정 명령(예: cw)은 다른 위치에서 . (마침표) 키를 눌러 반복할 수 있다.
- 저장 및 종료: 명령 모드에서 파일을 저장하거나 편집기를 종료할 수 있다.
- : 키를 누르면 화면 하단에 명령행이 활성화되어 ex 명령어를 입력할 수 있다.
- :wq : 변경 사항을 저장하고 종료한다.
- :q : 변경 사항을 저장하지 않고 종료한다. (수정된 내용이 있으면 오류 메시지가 나타날 수 있다.)
- :q! : 변경 사항을 저장하지 않고 강제로 종료한다.
- :w : 변경 사항을 저장한다.
- ZZ : (명령 모드에서) 변경 사항이 있으면 저장하고 종료한다. :wq와 동일하게 작동한다.
Vi는 텍스트 입력과 명령 실행 모드를 분리하여 사용자가 키보드의 홈 로우에서 손을 떼지 않고도 대부분의 편집 작업을 수행할 수 있도록 설계되었다. 이는 마우스나 별도의 기능 키, Ctrl 또는 Alt 키 조합에 크게 의존하는 다른 편집기들과 구별되는 특징이다. 하지만 현재 어떤 모드에 있는지 명확한 시각적 피드백이 부족하여 처음 사용하는 사람들은 명령 모드에서 텍스트를 입력하려 하거나 입력 모드에서 명령어를 입력하려는 실수를 하기도 한다.[36]
Vi는 ex 편집기의 시각 모드로 개발되었기 때문에, ex의 모든 명령어를 사용할 수 있다. 이를 ex 명령어라고 부르며, 명령 모드에서 :를 입력한 뒤 사용하는 명령어들(예: :w, :q)이 여기에 해당한다. 명령 모드에서 Q를 입력하면 ex 모드로 직접 전환하여 ex 명령어를 사용할 수도 있다.[47] (엄밀히 말하면 i나 a 같이 입력 모드로 전환하는 명령어들도 ex 명령어의 축약형으로 볼 수 있다.)
3. 3. ex 명령어
vi는 라인 에디터인 ex를 기반으로 만들어졌기 때문에 ex의 편집 기능을 모두 vi 내에서도 사용할 수 있다. 이를 ex 명령어라고 부르며, 명령 모드에서 `:` 키를 누른 뒤 해당 명령어를 입력하여 실행한다. `:` 대신 `Q` 키를 입력하면 ex 모드로 직접 들어가 ex 명령어를 사용할 수도 있다.[47]ex 명령어에는 다양한 기능이 포함된다. 대표적으로 파일을 저장하는 `:w`나 편집기를 종료하는 `:q`와 같이 편집 작업 자체를 관리하는 명령어가 있다. 또한, 특정 행 번호를 지정하거나 정규 표현식을 사용하여 원하는 행을 찾아 편집하거나, 특정 패턴을 검색하고 다른 내용으로 바꾸는 치환 기능, 매크로 기능 등도 ex 명령어를 통해 수행할 수 있다.
엄밀히 말하면, `i`나 `a`처럼 삽입 모드로 전환하는 명령어들도 ex 명령어의 약어 형태로 볼 수 있다.
4. vi 호환 편집기
유닉스에서 발전한 Vi는 이후 기능을 개선하거나 특정 환경에 맞춘 다양한 호환 편집기(클론)들이 등장하면서 그 명맥을 이어가고 있다. 특히 PC-UNIX 환경에서는 오리지널 vi 대신 이러한 호환 편집기들이 주로 사용되며, 많은 리눅스 배포판에서는 vi 명령어를 실행하면 실제로는 호환 편집기가 실행되도록 심볼릭 링크가 설정되어 있는 경우가 많다. 오픈 소스 프로젝트를 통해 개발되는 경우가 많아, macOS, 리눅스는 물론이고 MS-DOS나 Windows와 같이 원래 호환성이 없는 환경에서도 실행 가능한 버전들이 존재한다.
대표적인 vi 호환 편집기는 다음과 같다.
- Vim: "Vi IMproved"의 약자로, 현재 가장 널리 사용되는 vi 호환 편집기 중 하나이다. 오리지널 vi보다 훨씬 다양한 기능을 제공하는데, 대표적으로 구문 강조, 마우스 지원, 그래픽 버전(gVim), 시각 모드, 다양한 새로운 편집 명령어 등이 있다. 많은 리눅스 배포판과 macOS에 기본적으로 포함되어 있으며, 이 경우 `vi` 명령어는 Vim을 vi 호환 모드로 실행하는 링크인 경우가 많다. 맥용 Vim으로는 macvim 등이 있다.
- nvi: 4.4BSD를 개발할 당시, AT&T의 라이선스 문제[41]를 피하면서도 기존 vi 사용자들에게 익숙한 환경을 제공하기 위해 키스 보스틱이 개발한 편집기이다. Elvis 1.8 버전을 기반으로 만들어졌으며, 오리지널 vi와의 버그 수준까지 호환되는 것을 목표로 했다.[41] BSD 라이선스로 배포되며, FreeBSD, NetBSD, OpenBSD 등 여러 BSD 유닉스 계열 운영체제에서 기본 vi 편집기로 사용되고 있다.[41]
- Elvis: 스티브 커켄달(Steve Kirkendall)이 1990년 초에 Usenet을 통해 공개한 vi 클론이다.[27] 이전에 등장했던 STEVIE보다 더 완전하고 충실하게 vi를 구현하는 것을 목표로 했으며, 공개 이후 상당한 관심을 받았다.[28] 앤드류 S. 태넨바움의 제안으로 Minix 운영체제의 기본 vi 클론으로 채택되어 현재까지 사용되고 있다.[29] 초기 386BSD에도 포함되었으나, 이후 BSD 계열에서는 nvi로 대체되었다.
- WinVi: Windows 환경에서 사용할 수 있는 가벼운 vi 스타일 편집기이다. (소스에서는 국산 에디터 언급이 있지만, 널리 알려진 정보는 아닐 수 있다.)
이러한 호환 편집기들의 등장은 오리지널 vi의 라이선스 문제와도 관련이 있다. 빌 조이가 ed 편집기 코드를 기반으로 vi를 개발했기 때문에, AT&T 소스 라이선스가 없는 경우에는 자유롭게 배포하거나 수정하기 어려웠다. 이로 인해 1980년대 후반부터 STEVIE[25][26], Elvis[27], nvi[41]와 같이 라이선스 제약 없이 사용할 수 있는 오픈 소스 기반의 vi 클론들이 활발히 개발되었다.
한편, vi와 그 원형인 ex는 POSIX 표준으로 지정되어 있어, 유닉스 계열 시스템 간의 기본적인 호환성을 유지하는 데 기여하고 있다.
5. vi에 대한 평가 및 영향
vi는 유닉스에서 발전하였으며, 이후 등장한 여러 개선된 복제품들을 통해 그 명성을 이어가고 있다. 다양한 컴퓨터 시스템으로 포팅되어 널리 사용되고 있다.
vi는 창조된 이후 수년 동안, 특히 1984년경 Emacs가 널리 퍼지기 전까지 유닉스 편집기의 사실상 표준으로 자리 잡았다. MIT 외부의 해커들 사이에서 가장 선호되는 편집기이기도 했다.[33] 단일 유닉스 명세는 vi를 필수적으로 포함하도록 규정하고 있어, 해당 표준을 준수하는 모든 시스템에는 기본적으로 vi가 설치되어 있다.
vi는 유닉스 계열 운영체제 사용자들 사이에서 꾸준히 인기를 얻고 있다. 1991년에 실시된 USENET 여론조사에서는 응답자의 약 절반이 vi를 선호한다고 답했으며,[34] 1999년에는 유명 컴퓨터 서적 출판사의 설립자인 팀 오라일리가 자사에서 Emacs 관련 서적보다 vi 관련 서적을 더 많이 판매했다고 언급하기도 했다.[35]
vi의 주요 장점 중 하나는 콤팩트하고 시스템 자원을 적게 차지한다는 점이다. 이 때문에 간단한 텍스트 파일 수정 작업이나 통신 속도가 느린 네트워크 환경에서 원격 서버의 파일을 편집할 때 특히 유용하다. 이러한 장점 덕분에 최소한의 유닉스 환경에도 포함되는 경우가 많으며, 스마트폰, 무선 라우터, 액정 TV 등 리눅스를 코어 시스템으로 사용하는 다양한 하드웨어 기기에도 vi 또는 vi 호환 편집기가 탑재되어 있다.
한편, Emacs 사용자들은 vi의 인터페이스가 직관적이지 않다는 의미로 'vicious interface'(악랄한 인터페이스)라고 부르기도 한다. 과거에는 Snap.com이라는 회사에서 vi 인터페이스를 사용하는 인터넷 검색 엔진 'visearch.com'을 개발하기도 했다.
참조
[1]
Youtube
EXTRA BITS GREP from ED and Text Editors - Computerphile – Computerphile
https://www.youtube.[...]
2018-07-09
[2]
웹사이트
"vi — screen-oriented (visual) display editor", The Open Group Base Specifications Issue 7; IEEE Std 1003.1, 2013 Edition
https://pubs.opengro[...]
2013-07-15
[3]
웹사이트
Interview with Bill Joy
http://web.cecs.pdx.[...]
2017-06-03
[4]
웹사이트
Second Berkeley Software Distribution Manual
http://roguelife.org[...]
2018-03-27
[5]
웹사이트
An Introduction to Display Editing with Vi
https://docs-archive[...]
2019-02-06
[6]
웹사이트
The Jargon Lexicon
http://www.hackersdi[...]
2019-02-06
[7]
간행물
Readers' Choice Awards 2009
https://www.linuxjou[...]
2010-01-22
[8]
웹사이트
Source code for em
https://www.coulouri[...]
1976-02
[9]
서적
A Quarter Century of UNIX
https://www.coulouri[...]
Addison-Wesley
1994
[10]
웹사이트
Bill Joy's greatest gift to man – the vi editor
https://www.theregis[...]
2012-06-30
[11]
간행물
ex Reference Manual
https://minnie.tuhs.[...]
CSRG, UC Berkeley
[12]
웹사이트
See dates in copyright headers, ex 1.1 source code
https://minnie.tuhs.[...]
[13]
웹사이트
History and effective use of Vim
https://begriffs.com[...]
2021-08-27
[14]
간행물
Ex Reference Manual Version 1.1
https://begriffs.com[...]
1977-11
[15]
웹사이트
version.c, ex 1.1 source code
https://minnie.tuhs.[...]
[16]
웹사이트
1BSD/READ_ME
https://minnie.tuhs.[...]
[16]
웹사이트
Berkeley UNIX Software Tape
http://www.skytel.co[...]
2010-12-27
[17]
웹사이트
makefile, ex 2.0 source code
https://minnie.tuhs.[...]
[18]
웹사이트
READ_ME
https://minnie.tuhs.[...]
[19]
웹사이트
ex 3.1 source code
http://minnie.tuhs.o[...]
[20]
뉴스
A First Look at PC-IX
https://books.google[...]
2016-02-25
[21]
웹사이트
Change log for vi, versions 2.1–3.7
https://minnie.tuhs.[...]
[22]
간행물
vi Reference Manual
https://minnie.tuhs.[...]
CSRG, UC Berkeley
[23]
서적
UNIX: the complete reference
https://books.google[...]
McGraw-Hill Osborne Media
[24]
서적
The Insider's Guide To The Universe
https://www.1000bit.[...]
Charles River Data Systems, Inc.
[25]
웹사이트
Stevie
https://timthompson.[...]
2010-12-29
[26]
뉴스
A mini-vi for the ST
https://groups.googl[...]
2010-12-29
[27]
뉴스
A new clone of vi is coming soon: ELVIS
https://groups.googl[...]
2010-12-29
[28]
뉴스
Usenet, various newsgroups (comp.editors, comp.sys.*, comp.os.*), 1990
[29]
뉴스
Elvis vs. stevie
https://groups.googl[...]
2010-12-29
[30]
문서
Changes file, from Traditional Vi by Gunnar Ritter
http://ex-vi.cvs.sou[...]
[31]
웹사이트
Caldera License for 32-bit 32V UNIX and 16 bit UNIX Versions 1, 2, 3, 4, 5, 6, 7
https://www.mckusick[...]
[32]
웹사이트
The traditional vi
https://sourceforge.[...]
2023-07-24
[33]
웹사이트
EMACS vs. vi: The endless geek 'holy war'
https://www.linux.co[...]
2018-01-30
[34]
서적
The New Hacker's Dictionary
MIT Press
[35]
웹사이트
Ask Tim Archive
http://www.oreilly.c[...]
O'Reilly
1999-06-21
[36]
서적
Human-Computer Interaction: An Empirical Research Perspective
Morgan Kaufmann, an imprint of Elsevier
[37]
서적
Beginning the Linux Command Line
https://books.google[...]
Apress
2015-11-21
[38]
웹사이트
Vim documentation: options
https://vimdoc.sourc[...]
vim.net/sourceforge.net
2009-01-30
[39]
웹사이트
Vim documentation: starting
https://vimdoc.sourc[...]
vim.net/sourceforge.net
2009-01-30
[40]
인터뷰
Interview: Bram Moolenaar
https://www.linuxexp[...]
2005-04-18
[41]
서적
Learning the vi and vim editors
http://oreilly.com/c[...]
O'Reilly Media, Inc.
[42]
웹사이트
Development versions of nvi
https://repo.or.cz/w[...]
2011-01-01
[43]
웹사이트
Berkeley Vi Editor Home Page
http://www.bostic.co[...]
2011-01-01
[44]
문서
大木敦雄監修 小島範幸・北浦訓行著 『はじめてのvi&Vim』 [[技術評論社]]、2009年、23頁。「viの名前の由来は、VIsual Editorです。」
[45]
웹사이트
Jargon file vi
http://www.catb.org/[...]
2009-11-27
[46]
웹사이트
ADM-3Aの全景
http://www.vintage-c[...]
2009-05-24
[47]
서적
프로페셔널UNIX
アスキー (企業)|株式会社アスキー
1986-01-15
[48]
웹사이트
vi
http://pubs.opengrou[...]
IEEE 및 The Open Group
2018-01-21
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
