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

데이터 기술 자료

데이터 기술 자료 상세보기
제목 Vim 사용하기 : 유용한 플러그인과 새로운 환경에 나의 개발환경 불러오기
등록일 조회수 7363
첨부파일  

Vim 사용하기

유용한 플러그인과 새로운 환경에 나의 개발환경 불러오기



이번 시간에는 지난 시간에 이어 몇 가지 플러그인에 대해 더 알아보고 직접 설치해 본다. 그 후 최종적으로 구성된 나만의 개발 환경을 Git 저장소에 저장한 뒤 다른 환경에서도 쉽게 불러올 수 있도록 구성하는 방법을 알아보자.



Ctrlp 플러그인

우선 Ctrlp 플러그인을 설치해 보자. 지난 시간과 같이 Vim 웹페이지(vim.org)에 접속해 좌측 메뉴의 Script → Browse all 버튼을 클릭한 후 키워드를 ctrlp로 검색하면 쉽게 ctrlp.vim을 찾을 수 있다.



페이지 중간에 description을 통해 플러그인에 대한 설명을 볼 수 있다. 정규표현식을 통한 검색 패턴과 최근 사용된 파일에 대한 모니터링, 탐색 기능 등을 지원한다. 페이지 중간의 Git repository 링크로 이동하면 기본적인 사용법과 설정에 대한 더 자세한 정보를 얻을 수 있다.



Git 저장소에 Ctrlp의 설치 방법이 수록돼 있지만, 지난 시간에 배운 것처럼 vundle 플러그인을 활용해 플러그인을 설치해 보자. 우선 터미널을 열고 Vim 에디터를 이용해 go.vimrc 파일을 열자. 그리고 명령행 모드에서 BundleSearch 명령을 실행하자.



이번에는 지난 시간과 좀 다른 방법으로 설치해 보자. <그림 3>을 참고해 보면 BundleSearch를 실행했을 때 가장 상단에 Keymap: i - install plugin; c - Cleanup; s - Search; R - Reload list라는 표기가 있는 걸 발견할 수 있다. 말 그대로 i키는 플러그인 설치, c키는 삭제, s키는 플러그인 검색, 대문자 R은 플러그인 리스트를 다시 불러오는 명령이다. 이를 활용해 먼저 s키를 누르면 BundleSearch 하단 명령줄에 포커스가 옮겨진다. 이어서 원하는 플러그인명 Ctrlp를 입력한 후 엔터 키를 누른다.





만약 해당하는 플러그인이 있다면 <그림 5>와 같이 플러그인 목록이 리스리트로 보여진다. 여기서 i키를 눌러 플러그인을 쉽게 설치할 수 있다. 물론 지난 시간에 배운 것처럼 BundleInstall 명령을 따로 수행해도 좋다. 우측의 .vimrc 파일에도 플러그인명을 추가해 주는 것을 잊지 말자. Plugin 'ctrlp.vim' 텍스트를 복사해 포커스를 오른쪽 .vimrc 파일로 옮긴 뒤 12번 라인에 붙여넣기한다. 이제 Ctrlp 플러그인의 모든 설치가 완료됐다. Ctrlp 플러그인은 Vim 에디터 내에서 기본값으로 Ctrl + p 단축키로 실행된다. <그림 6>은 실행된 Ctrlp 플러그인의 모습이다.



<그림 6>의 하단을 보면 prt 옆에 file이 있다. 현재는 file 모드로 filename 검색을 실시한다. Ctrlp는 파일의 일부 즉, 파일명의 텍스트 일부나 확장자만 검색하더라도 관련된 파일을 모두 리스터로 보여준다. <그림 7>은 ‘bo.c’로 검색을 실시한 결과가 리스트로 나타난 것이다. 리스트 결과 간의 이동은 Ctrl + J, K로 상하 이동이 가능하며, 엔터키로 해당 파일을 열어볼 수 있다. 파일명만 알고 있을 때 매우 유용하게 파일을 찾을 수 있는 기능이다.



또 filename이 아닌 path로 검색하는 모드도 있다. Ctrl + d로 모드간 변환이 가능하며, 이 모드에서는 filename을 포함한 현재 디렉터리로부터의 경로를 모두 포함해 결과로 보여준다. 예를 들면 path 모드에서는 <그림 8>과 같이 검색해 볼 수 있다.



검색 키워드는 oper/h/.c이었다. 이처럼 해당하는 경로의 이름을 모두 알지 못하더라도 파일이름을 포함한 경로의 이름에 포함된 키워드를 모두 결과로 반환해 준다. 그리고 file과 path모드 옆에는 ={files}= ↔ 표시가 있다. file 모드는 fuzzy files들을 보여주는 모드, mru는 가장 최근 사용된 파일들을 나열, buf는 현재 buffer에 열려있는 파일들을 리스팅하는 모드이다. 각 모드는 Ctrl + f 키와 Ctrl + b 키로 변환할 수 있다.



각 모드를 적절히 활용하면 파일을 손쉽게 탐색할 수 있다. 그리고 엔터키로 파일을 선택하기 전 Ctrl + o 키로 파일을 어떤 방식으로 열지 선택할 수도 있다. t키는 탭, v키와 h키는 각각 수직, 수평 분할 창으로, r키는 현재 열려있던 파일을 선택한 파일로 교체, i키는 현재는 열지 않고 버퍼에 숨김 상태로 파일을 연다.



이밖에도 Ctrlp에는 열려있는 파일 내에서 키워드 검색 기능도 지원한다. 명령행 모드에서 :CtrlPLine 명령을 입력하면 입력되는 문자를 키워드로 인식해 현재 파일을 검색하는 기능을 제공한다. <그림 11>은 Ctrlp의 도움말에서 CtrlPLine 모드로 maximum이라는 키워드로 검색 기능을 수행한 모습이다. 해당 출력 결과를 클릭하면 문서의 해당 부분으로 점프할 수 있다.



Ctrl + p 키로 실행되는 files 모드 외에 필자는 각각의 모드별로 키를 맵핑(Mapping)해 손쉽게 원하는 모드를 열 수 있도록 설정해 뒀다.





miniBufExpl 플러그인

이번에 소개할 플러그인은 miniBufExpl이라는 플러그인이다. 이 플러그인은 간단하지만 꽤 유용한 기능을 제공한다. 윈도우와 같은 GUI 환경에서는 여러 파일들이 열려있어도 관리하기 쉽고 보기도 편하다. 예를 들면 여러 파일을 수정할 필요가 있을 때다. 이 경우 창을 분할해 작업할 수도 있지만, 작업 속도나 가독성 때문에 너무 많은 파일을 한번에 보는 것은 무리다. 이 때 miniBuf 플러그인을 이용하면 현재 버퍼에 열려있는 파일들을 하단의 작은 바 형태로 보여준다. 여기에 맵핑을 응용하면 마치 윈도우의 Ctrl + Tab 기능처럼 파일을 손쉽게 넘나들 수 있다. 이제 Vundle을 이용해 miniBufExpl 플러그인을 설치해 보자. 설치를 완료한 후에는 .vimrc 파일에 <그림 14>와 같이 키 맵핑을 해준다.





은 Ctrl + n이 눌렸을 때 next 버퍼로 이동하도록, 은 Crtrl + m이 눌렸을 때 이전 버퍼로 이동하도록 설정했다. 또한 Vim의 방향키인 H, J, K, L 키와 Ctrl 키의 조합으로 분할 된 창 간의 포커스를 이전의 Ctrl + W + H, J, K, L 조합보다 손쉽게 이동할 수 있도록 바인딩했다. 하단 바 형태의 작은 창에서 열린 파일들의 버퍼를 표시해 주고, Ctrl + m, n 키로 파일간 이동이 쉽게 이뤄진다. 현재 보여지는 파일은 빨간색으로 보여지며 ‘*’ 심볼이 붙는다.



그리고 수정 후 저장되지 않은 파일은 보라색으로 표시되며 ‘+’ 심볼이 붙게 된다. 이와 같이 맵핑된 키를 통해 버퍼에 열려있는 파일 간 이동을 쉽고 빠르게 할 수 있어 좀 더 효율적인 작업이 가능케 됐다.



Syntastic 플러그인

이클립스나 마이크로소프트의 비주얼 스튜디오 같은 IDE에서는 거의 기본적으로 문법 검사 기능을 제공한다. 문법 검사 및 Syntax checking 기능은 코드를 짜는 개발자에게 거의 필수적인 기능이다. Vim이 이런 기능을 제공하지 않는다면 치명적인 약점일 것이다. Syntastic 플러그인은 파일의 확장자를 토대로, 저장된 시기를 기점으로 Syntax checking 기능을 제공한다. 어느 라인에서 어떤 오류가 발생했는지 하단의 분할된 창에 관련 정보를 출력한다. Syntastic 플러그인 역시 다른 플러그인과 마찬가지로 Vim 홈페이지에 접속해 키워드 검색으로 손쉽게 정보를 열람할 수 있고, Git 저장소도 존재한다. 깃허브(Github)로 접속하면 상세한 정보를 찾아볼 수 있다.



Git 페이지에서 README의 Introduction 부분을 보면 외부 문법 검사 기능을 통해 Syntax checking을 수행하며 액션 스크립트, Ada, 애플 스크립트, 아스키 문서, 각종 쉘 스크립트를 비롯해 C, C++, C#, Cabal, CoffeeScript, CSS, CUDA, Ruby, Fortran, HTML, Java, JavaScript, LESS, LISP, MATLAB, Objective-C, PHP 등의 웹과 객체지향 언어, Verilog와 VHDL 같은 하드웨어 언어 등 거의 모든 언어에 대한 문법 검사 기능을 지원한다. 페이지에는 플러그인의 기능을 설명하는 간단한 스크린샷이 있다. Syntastic의 도움말 파일을 보자. 친절하게도 Contents 항목을 보면 1.2.절에 신규 이용자를 위한 추천 설정이 있다. Ctrl + V 비주얼 라인 모드를 이용해 109번 라인부터 116번 라인까지 복사한 후 .vimrc에 복사하면 기본적인 설정이 완료되며 바로 이용할 수 있다.







neocomplcache 플러그인

마지막으로 소개할 neocomplcache 플러그인은 여러 다른 언어에서 강력한 자동완성 기능을 제공하는 플러그인이다. 자동완성 기능은 대부분의 IDE에서 기본적으로 제공하는 기능인데, 개발할 때 큰 도움이 된다. 설치 과정은 다른 플러그인들과 같다. :Bundle Search 명령을 이용해 간단하게 설치하자.



설치를 마치고 도움말 파일을 열어보자. Recommend 키워드로 검색해 보면 신규 이용자를 위한 추천 설정이 있다. 마찬가지로 복사한 후 .vimrc 파일에 넣어준다. 그리고 자동으로 실행될 수 있도록 다음 문장을 추가하자.

let g:neocomplcache_enable_at_startup = 1



이 플러그인을 이용하면 플러그인이 1글자 이상 입력됐을 때 지금까지 입력된 글자를 바탕으로 자동완성 가능한 키워드를 드롭다운 팝업 메뉴로 제공한다. Tab 키로 순차적으로 선택할 수 있으며, 맨 아래 리스트까지 한 바퀴를 돌면 원래 처음 입력된 글자만 남게 된다. Space 키를 누르면 드롭다운 메뉴 창을 종료할 수 있다.



개발환경을 구성하는 데 있어서 중요한 기능인 자동완성이나 Syntax checking 기능, 그 외의 몇 가지 플러그인이 더해지면 Vim도 충분히 경쟁력 있는 IDE가 될 수 있다.



dot-files

지금까지 설치한 모든 플러그인과 키 맵핑 정보, 플러그인의 고유한 설정, indentation과 column 같은 Vim의 기본적인 설정, ColorScheme, vundle에 대한 설정 등 모든 설정 정보가 .vimrc 파일에 담겨있다. 이처럼 점(.)으로 시작하는 파일 포멧을 가진 파일들을 dot-files라고 한다. .bashrc나 .bash_profile, .gitconfig 등 주로 특정한 목적의 구성을 위한 파일들을 일컫는다.

이러한 설정 파일들을 모아 저장해 두었다가 빠르게 불러올 수 있다면 자신만의 환경을 손쉽게 구성할 수 있을 것이다. 이제 이런 작업을 Git을 활용해 가능하게 해보자. 우선 미리 작성된 쉘 스크립트가 필요한데 bash 쉘의 명령을 순차적으로 수행하도록 정의된 스크립트다. Vim 에디터로 파일명 bootstrap.sh를 만든 뒤 <그림 22>처럼 입력한다.

이후 실행이 가능하도록 권한을 주자. 터미널에서 다음과 같이 chmod 명령으로 실행 권한을 준다.

$chmod 754 bootstrap.sh





이제 준비물인 bootstrap.sh 파일과 .vimrc 파일의 준비가 끝났다. dotfiles라는파일과 .vimrc 파일, 그리고 자신이 구성한 환경설정 파일이 있다면 dotfiles 폴더에 모두 넣어준다.



그리고 이제 Git을 이용하기 위해 깃허브 웹사이트(github.com)에 접속한다. 계정이 없다면 Sign up 버튼을 클릭하고 회원가입을 한다.



이제 로그인을 하고 처음 보이는 메인 페이지에 카드 형식의 4개 메뉴가 보일 것이다. 우측 하단에 있는 녹색의 +New Repository 버튼을 누른다. 이후 <그림 26>처럼 Repository name에 dotfiles라고 적어준 뒤 하단의 녹색 Create repository 버튼을 눌러 저장소를 만든다.



이제 생성된 저장소가 보일 것이다. 저장소의 주소는 github.com/”userID”/dotfiles.git이다. 이제 빈 저장소에 나만의 dotfiles 폴더를 넣어줘야 한다. 생성된 페이지의 2번째 단락에 상세한 방법이 기록돼 있다. 내 컴퓨터의 터미널 프롬프트에서 차례대로 명시된 명령을 수행하면 된다. 단, 세 번째 명령에서 git add 명령을 README.md 파일만이 아닌 모든 파일을 추가하기 위해 점(.) 표기로 <리스트 1>과 같이 바꾼다.



<리스트 1> README.md를 점으로 바꿈 $ echo “# dotfiles” >> README.md $ git init $ git add . $ git commit -m “first commit” $ git remote add origin https://github.com/”userID”/ dotfiles.git $ git push -u origin master





이제 앞서 파일들을 모아뒀던 dotfiles 디렉터리 경로로 이동한 뒤 다음의 명령들을 차례대로 수행하자. 마지막 명령인 git push 명령을 입력하고 나면 깃허브의 아이디와 비밀번호를 입력하면 된다. 이제 깃허브 웹사이트에서 나의 Git repository로 가면 dotfiles 폴더가 잘 저장된 것을 확인할 수 있다.



이것으로 모든 준비가 끝났다. 이제 실제로 새로운 환경에서 구성된 개발환경이 잘 불러와 지는지 시연해 보자. 다른 환경에 Git이 설치됐다는 가정 하에 git clone 명령을 사용해 나의 Git repository를 Clone해보자. 터미널 프롬프트에 다음과 같이 입력한다.

$ git clone https://github.com/”userID”/dotfiles.git

이제 클론이 끝나면 생성된 dotfiles 디렉터리 폴더로 이동한 뒤 bootstrap.sh 스크립트를 실행한다.

$ ./bootstrap.sh

위에서 봤던 쉘 스크립트 안의 문장이 출력되며 [y/n]에서 y를 입력하면 자동으로 설치 과정이 진행된다.



설치가 완료되면 내 저장소의 dotfiles가 새로운 환경의 홈 디렉터리에 추가되며 .vimrc 내에 명시해 뒀던 플러그인 목록들도 잘 설치된 것을 확인할 수 있다. 이제 새로운 환경에서 추가적인 절차 없이 git clone 명령으로 나만의 개발환경을 손쉽게 불러올 수 있다.



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

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