vim

 

vi improved
개발자
Bram Moolenaar
최초 릴리즈
1991년
개발 언어
C
운영 체제
멀티 플랫폼[1]
언어
다국어 지원 (영어 기본)
라이선스
채리티웨어
GPL
웹 사이트
http://www.vim.org
[image]
TUI 환경의 vim
[image]
스크린샷은 vim의 그래픽 버전인 GVim이다. 원래 vi나 vim은 TUI이다. 하지만 CUI와 자주 혼동된다. CUI는 의미를 가지는 문자열의 나열로 이루어지는 사용자 인터페이스이고, TUI는 표현에 단순히 문자 또는 텍스트를 사용한 사용자 인터페이스, 즉 텍스트 GUI이다.
1. 개요
2. 상세
3. 역사와 현황
3.1. 관련 문서

[clearfix]

1. 개요


'''vim'''은 Bram Moolenaar가 1991년에 만든, vi와 호환되는 문서 편집기이다.

2. 상세


요즘 대부분의 유닉스리눅스 배포판에서 터미널에 vi를 치면 vim이 뜨도록 하여[2] 요즘에 리눅스유닉스를 배운 사람들은 vim이 vi인 줄 아는 경우도 있다. 그래서 vi와는 완전히 다른 물건이지만, 잘 구별하지 못 하는 사람이 많다.
종료하는 방법은 ESC키를 누른 후
:q!
를 순서대로 입력하고 엔터키를 누르면 된다. 저장 후 종료는
:wq
이다.
[image]
Emacs와는 아주 심한 라이벌 관계다.

3. 역사와 현황


많은 수의 리눅스유닉스에서는 vim을 vi로 alias(바로가기, 링크, 연결)시켜 놓았기 때문에 vi를 쳐도 vim으로 연결된다. 단, minimal 버전이다. 따라서 요즘 말하는 vi는 대부분 변종판인 vim(vi improved)을 지칭하며, nVi(Not Vi), elVis 등의 다른 변종도 존재한다. 특히 vim은 모든 리눅스 배포판과 OS X에 기본으로 탑재되면서 거의 대부분의 vi 이용자가 이 버전으로 입문해서 이 버전을 사용하고 있을 정도. 게다가 vim을 GUI 환경에서 쓸 수 있게 GVim으로도 변종되었다. 당장 이 문서 상단 스크린샷도 GVim의 스크린샷이다.
단, 유닉스에 따라선 vim이 아닌 진짜 vi 혹은 그것의 클론이 기본인 경우가 적지 않고, 이런 물건은 심지어 버그까지도 과거 BSD의 vi 것을 그대로 가진 경우가 있어서, vim 사용자가 모르는 해괴한 버그가 있다거나 vim에선 자주쓰는 핵심기능이 없는 등 vim과 다를 수 있다. 너비를 80문자 이상 지원하질 않아 깨진다거나, 비주얼 모드가 없다거나 등등...
2019년, vim와 neovim에서 심각한 셸 실행 취약점이 발견되었다. # 해당 취약점은 CVE-2019-12735 이며 Modelines 기능에서 발생한 취약점으로 파일을 여는 것만으로도 그대로 감염된다. 영향 받는 버전은 vim는 8.1.1365, neovim는 0.3.6이며 이후 버전에서 패치되었다.
역사와 전통과 함께 소스코드가 매우 복잡해져, NeoVim이라는 코드를 다시 짜는 프로젝트가 진행중이다. https://neovim.io/
진입장벽이 있어서인지 VimAdventure라는 학습용 게임도 있으니 배우고 싶은 사람은 참고하자. https://vim-adventures.com/
사실 vim이 절대적으로 많이 사용되고 있긴 하지만 결국 모체는 vi이고 핵심 기능인 특유의 키맵은 거의 대부분 vi로부터 왔기 때문에 납득이 가는 상황이긴 하다. 상술했듯 요즘엔 vi와 vim을 잘 구분 못하는 것도 있고.
리눅스에서 기본적으로 터미널창에 vimtutor라고 치면 기본서가 뜬다. vim에 익숙하고 싶은 유저는 참고하도록 하자.

3.1. 관련 문서



[1] 심지어 iOS 앱스토어에도 올라와 있다. 그것도 지금보다 더욱 엄격했던 잡스 생전부터 있었다!! 링크 vim 유저면서 아이폰을 쓰고 있다면 한번 설치해보자.[2] vi와 vim이 다르게 작동되는 리눅스 배포판도 존재한다. 이런 배포판에서 이 둘의 가장 눈에 띄는 차이점은 통짜 흰색으로만 나타나냐(vi), 문법 하이라이팅을 하느냐(vim)이다.