vim
[clearfix]
1. 개요
'''vim'''은 Bram Moolenaar가 1991년에 만든, vi와 호환되는 문서 편집기이다.
2. 상세
요즘 대부분의 유닉스와 리눅스 배포판에서 터미널에 vi를 치면 vim이 뜨도록 하여[2] 요즘에 리눅스나 유닉스를 배운 사람들은 vim이 vi인 줄 아는 경우도 있다. 그래서 vi와는 완전히 다른 물건이지만, 잘 구별하지 못 하는 사람이 많다.
종료하는 방법은 ESC키를 누른 후
:q!
를 순서대로 입력하고 엔터키를 누르면 된다. 저장 후 종료는 :wq
이다.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에 익숙하고 싶은 유저는 참고하도록 하자.