Vim

개요

  • 가장 널리 사용되는 Vi clone 중 하나
  • 자체 스크립트 언어를 지원하여 다양한 플러그인이 개발되어 있음

관련 링크


유용한 Tips

  • 편집 모드 상태에서 클립보드 내용을 붙여 넣기 (register 응용)
  • Macro 활용법
  • ctags를 활용한 태깅 및 소스 코드 분석
    • ctagshttp://ctags.sourceforge.net/
      • ctags는 대부분의 Linux 배포판에 포함되어 있다. 만약 없다면 소스를 받아 직접 빌드해서 사용하면 됨.
      • Windows 용 바이너리는 위 공식 홈페이지에서 바로 내려 받을 수 있음.
    • taglist 플러그인을 설치해야 함. 아래 유용한 Plugins 내용 참고.
    • Google에서 "vim ctags 설정"으로 검색하면 잘 정리된 내용들이 많이 있음.
    • 단축키
      • <C-]> 현재 커서가 위치한 심볼이 정의된 위치로 이동
      • g ] 현재 커서가 위치한 심볼의 검색 결과를 목록으로 보여줌
      • g <C-]> 현재 커서가 위치한 심볼의 검색 결과가 하나이면 즉시 이동하고 그렇지 않으면 검색 결과 목록을 보여줌
      • <C-t> 이전 위치로 복귀. <C-]> 명령으로 이동한 순서의 역순으로 이동

    • ex 명령
      • :tj <심볼이름> 심볼을 검색하고 첫 번째 검색 결과 항목으로 이동
      • :sts <심볼이름> 창을 수평 분할하여 검색 결과를 보여줌
      • :tselect <심볼이름> 심볼을 검색하여 여러 개일 경우 그 목록을 보여주고 번호를 눌러서 선택이 가능함
      • :tnext 검색한 심볼이 여러 개 존재할 경우 다음 심볼의 위치로 이동
      • :tprev 검색한 심볼이 여러 개 존재할 경우 이전 심볼의 위치로 이동
      • :tfirst 검색된 가장 처음 심볼 위치로 이동 
      • :tlast 검색된 가장 마지막 심볼 위치로 이동
  • 단어 자동 완성
    • 입력 모드에서 <C-N> 또는 <C-P> 키를 눌러 입력 중인 단어의 자동 완성이 가능함.
    • 파일, tags, 열려 있는 버퍼 등 다양한 내용을 기반으로 자동 완성이 가능하지만, 코딩을 위한 기능이 아니므로 함수 prototype 자동 완성과 같은 형태의 지원은 되지 않음.
    • 참고 LINK: http://vim.wikia.com/wiki/Any_word_completion
  • C++ 코드 자동 완성
    • 항상 참조하게 되는 C/C++ 소스나 헤더 파일 등에 대해 미리 tags를 만들어 두고 이것을 기반으로 현재 편집 중인 소스 코드 내에서 함수나 변수 등에 대한 자동 완성을 지원해주는 기능.
    • OmniCppComplete 플러그인 설치 필요. 아래 유용한 Plugins 참고.
    • 설정 방법은 내용이 많아 여기서 더 이상의 자세한 설명은 생략한다. 아래 참고 LINK를...
    • 참고 LINK: http://vim.wikia.com/wiki/C%2B%2B_code_completion
  • Vim / Cscope 연동
    • ctags보다 더 정밀한 소스 코드 태깅이 가능한 Cscope를 Vim과 연동하여 사용할 수 있다.
    • 단축키
      • <C-\> <질의종류> 질의종류에 따라 검색 실행
      • <C-t> 이전 위치 복귀
    • ex 명령
      • :cs find <질의종류> <심볼>
    • 질의 종류
      • 0 또는 s   이 C 심볼 찾기    
      • 1 또는 g   이 정의 찾기
      • 2 또는 d   이 함수가 부르는 함수 찾기
      • 3 또는 c   이 함수를 부르는 함수 찾기
      • 4 또는 t   이 변수에 대입하는 부분 찾기
      • 6 또는 e   egrep 패턴 찾기
      • 7 또는 f   이 파일 찾기
      • 8 또는 i   이 파일을 #include 하는 파일 찾기
    • 참고 LINK: http://cscope.sourceforge.net/cscope_vim_tutorial.html
  • Makefile을 이용한 빌드
    • :make Vi를 빠져 나가지 않고 바로 make 명령을 수행함. 옵션으로 target을 주는 것도 가능
    • :copen 빌드 실행 결과에서 발생한 에러 목록창을 보여줌
    • :cclose 에러 목록창을 닫음
    • :cw 에러 목록창 토글 (에러가 있을 경우만)
    • :set makeprg=<실행파일명> 빌드 시 사용할 명령을 설정. 기본값은 'make'
  • Vertical Visual Block 모드
    • <C-v> 세로 비주얼 블럭 선택 모드로 전환
    • h, j, k, l 또는 <커서키>를 이용해 블럭 범위 선택
    • 다양한 명령키 조합이 가능
      • d 선택한 블럭 삭제. 이렇게 삭제한 내용은 다시 p, P 명령으로 오려진 형태 그대로 붙여 넣기 가능.
      • <S-i> 텍스트 입력 <ESC> 선택한 블럭 앞쪽에 입력한 텍스트를 일괄 추가

유용한 Plugins

  • Vundle: Vim의 플러그을 쉽게 설치/업데이트/삭제가 가능하도록 도와주는 플러그인.
  • taglist: ctags로 생성한 tags 파일을 내용을 바탕으로 소스 코드 탐색을 도와주는 플러그인. 자세한 내용은 유용한 Tips 참고.
  • Trinity: taglist, NERDtree, SrcExpl, 세 가지를 합쳐서 Source Insight와 유사한 IDE 환경을 만들어주는 플러그인.
    • 아름답다! 그렇지만 태그 파일이 너무 크면 커서 한 번 이동하는 것도 고역이 될 것임.
    • 설치 및 사용에 대한 설명: https://github.com/wesleyche/Trinity
  • BufExplorer: 여러 개의 파일을 오가며 편집할 때 버퍼 히스토리를 관리해주고 버퍼 간 빠른 전환을 가능하게 해주는 플러그인.
  • OmniCppComplete: ctags 태깅 파일을 이용한 C++ 코드 자동 완성 지원 플러그인.
  • Emmet: 구 ZenCoding. HTML과 CSS 고속 코딩을 위한 플러그인.
  • Sokoban: Vim에서 소코반 게임을 즐길 수 있는 플러그인. 코딩하다가 잠시 머리 식히고 싶을 때 할 만함.

Color Scheme

  • Vim Colorscheme Gallery: 다양한 Color Scheme을 스크린샷으로 직접 볼 수 있고 마음에 드는 것을 클릭하면 상세 정보와 함께 그 Color Scheme을 받을 수 있는 링크를 보여줌.
    • Dark와 Light 두 가지 종류로 구분해서 보여주기 때문에 선호하는 테마를 쉽게 고를 수 있음.
    • 화면 우측 상단에 언어별 Syntax Highlighting을 선택할 수 있도록 되어 있는 것이 특징
  • vim-colorschemes: 무려 480 개가 넘는 Color Scheme을 제공하는 패키지. 다양한 설치 방법을 제공하며 Vundle을 사용한 설치 방법도 제공함.
  • 10 Vim Color Schemes You Need to Own: 엄선된 10 가지의 Color Scheme을 소개하는 페이지.
  • vim-color-solarized: Solarized 컬러 테마를 Vim에도 사용할 수 있음. 개인적으로 좋아하는 테마.
    vim-color-solarized screenshot

Comments