{{위키데이터 속성 추적}}
{{소문자}}
{{다른 뜻|VI}}
{{소프트웨어 정보
|이름 = vi
|로고 = 
|화면 = NetBSD 6.1 vi C Hello World.png
|설명 = vi 편집기를 이용해 [[C (프로그래밍 언어)|C]]로 [[Hello World]] 프로그램을 편집하고 있다.
|개발자 = [[빌 조이]]
|released = {{시작 날짜와 나이|df=yes|1976}}
|최근 버전 = 
|최근 버전 출시일 = 
|미리보기 버전 = 
|미리보기 버전 출시일 = 
|운영체제 = 
|플랫폼 = 
|종류 = [[문서 편집기]]
|라이선스 = [[BSD]]
|웹사이트 = 
}}
'''vi'''(브이아이, {{IPAc-en|ˈ|v|iː|ˈ|aɪ}})는 [[Emacs]]와 함께 [[유닉스]] 환경에서 가장 많이 쓰이는 [[문서 편집기]]이다. 1976년에 [[빌 조이]]가 초기 [[BSD]] 릴리즈에 포함될 편집기로 만들었다. vi라는 이름은 한 줄씩 편집하는 [[줄단위 편집기]]가 아니라 한 화면을 편집하는 비주얼 에디터(visual editor)라는 뜻에서 유래했다. 간결하면서도 강력한 기능으로 사용자가 많다.

현재는 오리지널 vi를 사용하는 경우는 거의 없고, 일반적으로 기능을 모방하여 만들어진 클론을 사용하고 있다. 이런 클론 중 많이 쓰이는 것은 기능이 다양한 것을 장점으로 내세우며 리눅스 배포판에 포함되는 [[Vim]] 및 그의 리팩터판인 Neovim, 그리고 [[BSD]] 라이선스로 제공되며 원본 vi의 동작과 호환성으로 정평이 나 있는 [[nvi]], 독자적인 팬층을 확보한 elvis 등이 있다.

== vi의 역사 ==
[[파일:KB Terminal ADM3A.svg|섬네일|450px|오른쪽|ADM3A 키보드 레이아웃]]
[[빌 조이]]는 [[캘리포니아 대학교 버클리]]에서 [[:en:Lear-Siegler|Lear-Siegler]] [[ADM3A]] [[단말기|터미널]]에서 vi를 작성했다. 그런데 이 [[단말기|터미널]]의 키보드는 {{키눌림|Esc}} 키가 현재 많이 사용되는 IBM 호환 키보드([[IBM PC 키보드]])의 {{키눌림|Tab}} 키에 해당하는 위치에 있었기 때문에 이 키를 가지고 사용자들이 vi 에디터 모드 변경을 매우 효과적으로 할 수 있었다. 또한 Lear-Siegler ADM3A [[단말기|터미널]]에는 화살표 키에 대응할 만한 키가 없었기 때문에 vi는 [[HJKL 키|H, J, K, L 키]]([[:en:HJKL keys|keys ''h'',''j'',''k'',''l'']])가 지금의 화살표 키를 대신해서 커서를 이동하게 만들어졌다.

== 조작법 ==
Vi는 명령모드(command mode)와 편집모드(insert mode)가 있으며 일단 프로그램을 시작하면 일반적으로 명령모드로 시작하게 된다. 이때 키보드에서 {{키눌림|I}} 키를 누르게 되면 편집모드로 들어갈 수 있다. 편집모드에서 문서 내용을 추가, 삭제 등 편집 작업을 할 수 있다. 여기서 {{키눌림|Esc}} 키를 눌러 편집모드를 빠져나와 다시 명령모드로 되돌아 올 수 있다. 따라서 vi에서는 편집모드에서만 내용을 넣거나 수정할 것을 권장한다. 명령모드에서 vi를 종료하기 위해서는 {{키눌림|Z}}{{키눌림|Z}} 또는 {{키눌림|:}}키를 눌러 명령행{{키눌림|:}}을 활성화한다. 여기서 {{키눌림|q}}(저장 없이 종료) 또는 {{키눌림|w}}{{키눌림|q}}(저장하고 종료) 등을 사용할 수 있다.
===종료 예===
* 저장 후 종료
:> :wq
* 종료
:> :q

=== Vi의 여러 가지 명령어 ===
vi 편집기는 입력, 명령, 비주얼 등의 모드가 있어 같은 키 입력이라도 현재 모드에 따라 다른 동작을 한다. 입력과 명령모드를 주로 왔다갔다 하면서 편집하게 된다. 입력모드에서는 말 그대로 입력하는 문자가 그대로 문서에 입력된다. 입력상태에서 {{키눌림|Esc}} 키를 누르면 명령모드로 바뀌게 된다. 명령어 모드에서는 {{키눌림|Alt}}나 {{키눌림|Ctrl}} 키 등을 사용하지 않고도 키를 두드려서 커서의 움직임이나 복사하기, 종료 등의 기능을 수행할 수 있다. 예를 들면 {{키눌림|J}}는 커서를 아래로, {{키눌림|K}}는 위로 움직이게 하며, {{키눌림|I}}는 입력상태로 들어가게 한다. 명령어 모드에서 {{키눌림|V}} 키를 누른 후 {{키눌림|Ctrl}} {{키눌림|방향키}} 등을 누르면 선택영역반전 기능이 순간 활성화되어 영역 선택을 설정할 수 있게 된다. vi 실행 초기의 모드는 명령모드이기 때문에 vi를 처음 사용하는 사용자들은 아무리 키를 눌러도 누른 키가 입력이 되지 않아 당황하는 경우가 많다.

== 기종별 다양한 Vi ==
물론 Vi는 [[유닉스]]에서 발전하였고 조금 더 개량한 vi 복제품들이 나와서 그 명성을 이어가고 있다. 또한 다음과 같이 다양한 컴퓨터에 포팅되어 있다.
[[파일:Vim.PNG|섬네일|[[Vim]]]]
=== [[유닉스]]용 vi 복제품(clone) ===
[[Vim]]은 "Vi IMproved"의 약자로 만든 이름이며 현재 vi보다 더 많이 사용되고 있다. 이 프로그램은 vi보다 더 다양한 기능([[구문 강조]] 기능(또한 이 기능을 작성하는 기능), [[마우스]] 지원, 그래픽 버전, 시각 모드, 수많은 새로운 편집 명령어들을 가지고 있다. 현재 대부분의 [[리눅스]] 시스템에서는 이 프로그램이 표준 모델로 들어가고 있다.

=== Mac용 vim ===
* [http://code.google.com/p/macvim/ macvim: Vim for the Mac]: 가장 최근에 나온 맥용 Vi

== vi에 대한 다양한 평가 및 vi의 영향력 ==
* [[emacs]] 애용자들은 vi를 ''vicious interface''라고 한다.
* Snap.com 은 vi 인터페이스를 사용하는 인터넷 검색 엔진을 개발했다. visearch.com [http://www.visearch.com/ 웹페이지] {{웨이백|url=http://www.visearch.com/ |date=20070202014611 }}

== 같이 보기 ==
{{위키공용분류}}
* [[Vim]]
* [[GNU 나노]]

== 외부 링크 ==
* [http://www.thomer.com/vi/vi.html Vi Lovers 홈페이지]
* [http://vi.kldp.org/ 한국 Vi 사용자 모임]
* [http://kldp.org/node/102947 Vi/vim 단축키 모음]

{{유닉스 명령어}}

{{전거 통제}}

[[분류:Vi| ]]
[[분류:자유 소프트웨어]]
[[분류:유닉스 문서 편집기]]
[[분류:유닉스 SUS2008 유틸리티]]
[[분류:BSD 라이선스 소프트웨어]]
[[분류:자유 문서 편집기]]
[[분류:콘솔 애플리케이션]]