Vim
개요
개요
- 가장 널리 사용되는 Vi clone 중 하나
- 자체 스크립트 언어를 지원하여 다양한 플러그인이 개발되어 있음
관련 링크
관련 링크
- 공식 홈페이지: http://www.vim.org/
- 플러그인 스크립트: http://www.vim.org/scripts/
- Windows 용 최신 설치 패키지: https://tuxproject.de/projects/vim/
- Vim Awesome (플러그인 랭킹 및 정보 제공): https://vimawesome.com/
- Wikia Vim Tips 페이지: http://vim.wikia.com/
- Vim과 관련한 다양한 팁과 정보를 제공함
- 특히 첫 페이지의 "Did you know?" 란에 알찬 정보가 많이 게재됨.
유용한 Tips
유용한 Tips
- 편집 모드 상태에서 클립보드 내용을 붙여 넣기 (register 응용)
<C-R> +
사용.Ctrl-R
키를 누른 후+
키를 누르는 것으로, 이 방식은 ex 명령줄에서도 동일하게 사용 가능.- '
+
' 키가 시스템 클립보드를 가리키는 레지스터임 y
나d
명령으로 복사한 내용은 default register("
)로 들어가므로<C-R> "
사용하여 붙여 넣기 가능- 모든 register 내용은 ex 명령
:reg
로 가능 - 참고 LINK:
- Macro 활용법
- 매크로 기록:
q <letter> <기록할 일들...> q
- 매크로 실행:
<number> @ <letter>
- 매크로 내용 편집창에 붙여 넣기는
" <letter> p
명령으로 가능 - 매크로 내용 설정 파일 저장하려면
.vimrc
또는_vimrc
파일을 열어 아래 형식으로 입력하면 됨let @<letter> = '<C-R> <letter>'
- 참고 LINK:
- 매크로 기록:
- ctags를 활용한 태깅 및 소스 코드 분석
- ctags: http://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
검색된 가장 마지막 심볼 위치로 이동
- ctags: http://ctags.sourceforge.net/
- 단어 자동 완성
- 입력 모드에서
<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
유용한 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 고속 코딩을 위한 플러그인.
- 설치 및 사용에 대한 설명: https://github.com/mattn/emmet-vim
- Sokoban: Vim에서 소코반 게임을 즐길 수 있는 플러그인. 코딩하다가 잠시 머리 식히고 싶을 때 할 만함.
Color Scheme
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에도 사용할 수 있음. 개인적으로 좋아하는 테마.