대메뉴 바로가기 본문 바로가기

데이터 기술 자료

데이터 기술 자료 상세보기
제목 Vim 사용하기 : Vim으로 나만의 멋진 개발환경을 만들어 보자
등록일 조회수 6530
첨부파일  

Vim 사용하기

Vim으로 나만의 멋진 개발환경을 만들어 보자



효율적인 소프트웨어 개발을 위해서는 여러 요건이 충족돼야 한다. 그러나 개발자에게 중요한 것 중 하나는 개발 환경일 것이다. 이클립스(eclipse)나 마이크로소프트 사의 비주얼 스튜디오(Visual Studio)와 같은 통합개발환경(IDE)이 보급됐지만 초기 설치에 비교적 큰 비용이 드는가 하면 환경 자체가 무겁거나 확장성이 떨어지는 경우가 있다. 특히 기업이나 개발팀에서 VM을 사용하거나 원격 접속을 해야할 때 더욱 그렇다. 개발환경 중 하나인 Vim(Vi IMproved)은 이런 경우 유용하다. 가볍고 크로스 플랫폼을 지원하며 다양한 플러그인을 사용해 이식성, 확장성이 높기 때문이다.



최근 개발자들은 코딩 능력 뿐만 아니라 어떤 도구와 툴을 사용하는지, 어떻게 개발 환경을 구성하고 사용하는지를 중시한다. 그 예로 오픈소스 프로젝트 협업을 위한 Git 사용 관련 소양, 의존성 관리와 빌드(Build) 관리 툴, 커맨드라인과 터미널 사용법 등에 대한 관심이 높아진 현실을 들 수 있다. 이런 분위기 속에서 이 글을 통해 Vim을 활용해 나만의 유연하고 멋진 개발환경을 구성하는 방법을 공유하겠다.



Vim 소개

Vim은 브램 물레나르(Bram Moolenaar)가 만든 명령어 라인 사용자 인터페이스(CUI) 기반의 vi 호환 텍스트 편집기다. 현재 윈도우, 리눅스, OS X를 비롯한 크로스 플랫폼 운영체제 환경을 지원하며 vi와 호환되면서 독자적으로 다양한 기능을 추가한 vi의 개선형 버전이다. Vim 스크립트를 통해 자유롭게 사용환경을 변경하거나 확장된 정규표현 문법, 다국어 지원, 문법 검사와 강조 기능, 플러그인을 통한 확장성 등 사용자에게 편의를 제공한다.



<그림 2>는 현업의 개발자들이 많이 사용하고있는 매우 인기있는 IDE중 하나인 이클립스의 사진이다. Vim의 초기 화면과는 다르게 여러가지 버튼과 메뉴, GUI 기반의 인터페이스로 분할된 창들이 여러가지 정보를 제공한다. 반면 Vim의 초기 실행화면인 <그림 3>을 보면 이클립스(eclipse)에 비해서 초라하다. 검정 바탕에 흰 텍스트만 보일 뿐이다. 윈도우의 노트패드와 비슷한 모습이다.



하지만 Vim 사용에 익숙해진 개발자들은 Vim의 강력한 단축키 기능과 자유로운 커서 이동에 익숙해져 기존 GUI 방식의 개발 환경보다 Vim 환경을 선호하게 된다. Vim은 내부적으로 여러 모드를 지원하며 각 모드마다 제어가 다르게 작동된다. 때문에 마우스와 같은 다른 입력장치의 도움 없이 적은 동선으로 키보드에서 손을 떼지 않고 모든 제어가 가능하다. <그림 4>는 개발 환경 구성을 마친 Vim 화면이다.





이제 실제 Vim의 모드들이 어떻게 작동되는지 알아보자. 프롬프트에서 vim을 입력하거나 vi를 입력하면 실행된다.





Vim의 명령은 그 양이 방대해서 책 한 권을 써도 모자라기 때문에 다섯 개의 표로 나누어 기본적인 명령만 알아봤다. Vim을 아주 처음 접했다면 프롬프트에 다음 명령을 입력하여 약 30분간 직접 Vim의 명령을 실습해보면서 기본 기능을 학습시켜주는 튜터 기능을 이용할 수도 있다.



$ vim tutor

프롬프트에 다음 명령을 입력하면 vim tutor 세션이 시작된다(<그림 5> 참조).

Vim 개발환경을 직접 구성하는 방법에 대해서 알아보자. 우선 세 가지가 필요하다. 첫째는 Vim의 전체적인 설정을 관장하는 Vimrc, 둘째는 컬러 테마를 설정하기 위한 Colorscheme, 셋째는 다른 IDE와 같은 추가기능을 사용하기 위한 플러그인 설치단계다. 이번 호에서는 Vimrc의 기본적인 설정방법과 Colorscheme에 대해 설명하고, Vim 플러그인 설치를 위한 Vim 디렉터리의 구조를 알아보도록 하겠다. 그 이후 플러그인 설치와 적용, 시연에 관한 내용, 그리고 모든 단계를 거쳐 완성된 나만의 Vim환경을 저장하고 다른 새로운 작업환경에서도 손쉽게 저장된 나만의 환경을 불러와 사용할 수 있게 하는 방법을 소개하겠다.



Vimrc

.vimrc 혹은 _vimrc는 Vim의 모든 설정을 관장하는 파일이다. 내부에는 Vim의 신택스(Syntax)에 관한 설정, 들여쓰기 설정, 문법 강조, 문법 검사, 화면 너비, 탭의 크기, 편집 설정, 라인 넘버링, 플러그인 설정, 키 맵핑(Key mapping) 설정, 텍스트 색깔, colorscheme (테마설정), 기타 옵션에 관한 설정 등 Vim과 관련된 모든 설정들을 이 파일에서 할 수 있다. Vimrc는 Vim Runtime Configuration의 약어로 Vim 실행 환경 구성, 정도로 해석될 수 있는데 vimrc를 잘 설정해 두면, 가독성(Readability)를 높이고, 디버깅(debugging)과 코딩에 도움을 주어 좀 더 쾌적한 개발 환경 제공을 기대할 수 있다. 나아가서 소프트웨어 공학적인 측면에서 더욱 효율적인 개발과 유지관리 비용을 줄일 수 있는 효과를 기대할 수 있기 때문에 vim의 환경을 구성하는데 꼭 익히고 넘어가야 할 부분이다. 터미널 프롬프트에 다음과 같이 입력해 보자.

$ vi ~/.vimrc

~/.vimrc파일이 없다면 새로운 파일이 만들어질 것이다. 이제 i 키를 눌러 입력 모드로 전환한 뒤, 아래와 같이 입력해 주자. “은 주석을 의미한다. ESC 키를 눌러 일반모드로 전환한 뒤, : (콜론)을 입력해 명령행 모드에서 :wq 명령으로 저장 후 종료를 한다. 이어서 들여쓰기 설정이 잘 되었는지 살펴보자.





<그림 7>처럼 입력해 보자. 자동 들여쓰기 기능이 없었다면 Tab 키나, 공백 문자를 연속으로 입력하여 매번 번거롭게 들여쓰기를 해야했을 것이지만 자동 들여쓰기 설정으로 인해 Enter 키를 입력했을 때, 이전의 들여쓰기한 위치만큼 들여쓰기가 잘 되고 있다. 각 행의 왼쪽 끝에 라인의 번호도 잘 표시되고 있다. 이번에는 다른 설정을 해 보자.



5번 라인은 탭 하나가 얼마만큼의 공백 수치를 가지게 될지를 설정한다. shiftwidth는 괄호 후에 얼마만큼의 들여쓰기가 들어갈지를 지정해 준다. 7번 라인의 syntax on은 문법 강조 기능을 켜는 설정으로, 일반 모드에서 syntax off라고 명령을 주면 문법 강조 기능이 꺼지게 된다. 문법 강조 기능이 없으면 모든 텍스트가 흰 텍스트로 표시되므로 개발을 할 때 대부분의 경우에서는 텍스트에 색상 강조가 있는 편이 가독성 면에서나 코딩을 할 때 도움이 될 것이므로 syntax on 옵션을 준 것이다.

9번 라인의 설정은 현재 입력하고 있는 명령을 우측 하단 명령줄에 표시하여 어떤 명령을 입력하고 있는지 사용자가 볼 수 있도록 해주는 설정이다. 그리고 colorcolumn은 해당하는 수치의 열에 수직의 컬러 라인을 넣어주는 설정으로 실제 기업의 개발팀이나 팀 프로젝트를 수행하는 경우 팀 사이의 스타일가이드와 같은 약속을 정할 때 유용하다.

또 textwidth 옵션은 직접적으로 열의 너비를 해당하는 수치까지로 제한함으로써 colorcolumn과 함께 많이 쓰인다. cursorline은 현재 위치한 커서에 언더라인을 표시해 준다.



.vimrc 파일을 저장 한 후, 작업중인 다른 파일을 열어봤다. 확실히 초기상태의 Vim보다 보기에도 좋고 효율적인 작업을 기대할 수 있다.



Colorscheme

colorscheme은 Vim의 색상 테마 설정 기능으로 자신의 스타일에 맞는 테마를 설정함으로써 개개인에게 맞는 테마를 찾아 가독성(Readability)을 높이고 작업 환경을 쾌적하게 유지할 수 있게 해준다. 명령행 모드에서 :colorscheme [테마명]을 입력해주면 된다. 한 가지 팁은 Vim 실행 상태에서 명령어를 일부만 입력하고 Tab 키를 눌러 자동완성 기능을 사용하는 방법도 있다.





blue를 적용하면 <그림 10>과 같이 푸른색 계열의 테마로 바뀐다. 명령어를 일부만 입력한 뒤, 자동완성 기능인 Tab 키를 계속 누르면 해당하는 설정의 값을 순차적으로 계속 선택할 수 있고, 또한 Shift+Tab 키를 누르면 역순으로 계속 선택할 수 있다. 그런데 선택 가능한 옵션이 많다면 순차적으로 값을 선택하는 것은 비효율 적이므로 CTRL+D 키를 눌러서 해당하는 옵션의 설정 값들을 한 화면에서 list 형태로 볼 수 있다.



이와 똑같이 위에서 배웠던 초기 .vimrc 설정에서 set 옵션의 값들도 출력해 볼 수 있다. 마찬가지로 set 입력 후 CTRL+D 키를 누르면 set옵션으로 설정 가능한 값들이 모두 출력되어 볼 수 있다. 해당하는 값이 많을 때는 한 화면에 모두 출력하지 못하는 경우가 있는데 이 때 u(up) 키와 d(down)키로 상 하로 페이지를 움직이며 값들을 탐색할 수 있다.



이를 참고하여 자신에게 맞는 vimrc 옵션을 적용하면 나만의 설정을 갖춘 효율적인 Vim환경을 구성할 수 있다.



Vim의 구조

이제 Vim의 구조를 알아보자. Vim은 각 사용자 계정의 홈 디렉터리에 .vim 이라는 디렉터리 폴더를 가지고 있다. (윈도우용 Vim은 _vim) 몇 년 전까지만 해도 지금과 같이 이렇게 체계적인 구조를 갖지 못했었다고 한다. 본래는 .vim 디렉터리 안에 모든 플러그인 파일이 존재해야 했는데, 대부분의 경우 여러 플러그인을 설치해 혼용하는 경우이므로 서로 다른 많은 플러그인 파일들이 뒤엉켜 유지 및 관리하기가 불편했었다. 때문에 플러그인의 새로운 업데이트가 발표되면 각각의 플러그인 마다 업데이트를 적용해야 했으며 같은 종류의 비슷한 플러그인을 재설치하는 경우 복잡하고 귀찮은 과정을 겪어야만 했다. 그러나 Vundle 이라는 플러그인 관리 툴이 개발되면서 Vim의 사용성은 매우 간편해졌다. Vundle은 Vim의 플러그인을 유지 및 관리해주는 플러그인으로 몇 가지 명령만으로 해당하는 플러그인을 설치, 검색, 삭제 업데이트 등 모든 관리가 가능하도록 만들어줬다. 본 글에서는 Vundle 사용을 기본으로 모든 단계를 설명하고 다음 회에서 더 자세하게 다루겠다.



<그림 14>에서 Vim의 디렉터리 구조 일부가 보인다. bundle 디렉터리의 하위에 각각의 플러그인의 디렉터리가 존재한다. 또 위에서 소개한 Vundle 자체도 플러그인이기 때문에 다른 플러그인 폴더와 동일한 레벨인 bundle의 내부에 존재하며 각 플러그인 들은 조금씩 다른 디렉터리 구조를 갖고 있지만, 대부분의 플러그인들은 공통적으로 autoload와 doc, plugin이라는 디렉터리를 각각 자신의 하위 폴더로 가지고 있다. autoload와 plugin폴더의 내부에는 해당하는 플러그인의 실행에 필요한 [플러그인이름.vim] 파일이 존재하며, 각각의 doc 폴더 내부에는 해당 플러그인의 도움말이나 사용법 및 관련한 내용이 기재된 텍스트파일이 존재한다. 플러그인을 설치한 후, 이 텍스트 파일을 참고하여 해당 플러그인의 사용법이나 도움말, 초기설정, 실제 사용 및 응용방법 등 많은 정보를 참조할 수 있으므로 보다 효과적으로 플러그인을 사용하는데 많은 도움을 얻을 수 있다. 지금까지 Vim의 간략한 소개와 기능에 대한 설명, 그리고 vimrc와 colorscheme, .vim의 구조에 대해 알아봤다. 다음 회에는 개발에 직접적으로 도움이 되며 더욱 강력한 기능을 추가할 수 있는 Vim 플러그인에 대해서 자세하게 소개하겠다.



출처 : 마이크로소프트웨어 4월호

제공 : 데이터전문가 지식포털 DBguide.net