# [VIM] 자주 사용하는 기능 & 단축키 정리
> 2014년 1월 10일 작성중.
> 2015년 7월 1일 일부 추가, 선택영역 복사/삭제 등, 참조 사이트 링크 추가.
> vi 명령어 키보드 연습 : http://www.vimgenius.com/lessons/vim-intro/levels/level-1
> vi 명령어 시트 : http://csnipp.com/s/69/-Vim-Cheat-Sheet
## 1. Copying & Paste
* 복사
> [y,w] : 현재 커서부터 다음 공백까지 복사 (단어 복사).
> [y,y] : 현재 라인을 복사한다.
> [V] + [directions] + [y] : Visual 모드 + 방향/영역선택 + 복사
* 붙여넣기
> [p] : 현재 커서에 붙여넣기.
> [P] : 현재 커서 이전에 붙여넣기. (붙여넣은 후에 공백이 한 칸 생긴다.)
> [명령모드, ctrl + r, 0] : 명령모드에서 붙여넣기를 한다.
* 이동
> [shift + j (J)] : 아래 줄, 당겨서 커서 다음에 위치 시키기.
* 삭제
> [d,d] : 한 줄 삭제.
> [d,w] : 한 단어 삭제. (현재 커서부터 다음 공백까지 삭제)
> [d,2,w] : 두 단어 삭제.
> [V] + [directions] + [d] : Visual 모드 + 방향/영역선택 + 삭제
## 2. Search & substitution
> [/] : 앞으로 검색, ex) /test
> [?] : 뒤로 검색, ex) /test
## 3. 이동 관련
> [b] : 다음 단어로 이동
> [w] : 이전 단어로 이동
> [B] : 다음 공백 앞으로 이동
> [W] : 이전 공백 앞으로 이동
> [e] : 다음 단어 끝으로 이동
> [E] : 다음 공백 앞으로 이동
> [g,e] : 다 단어 끝으로 이동
> [g,E] : 다 공백 앞으로 이동
> [}] : 다음 scope 로 이동
> [{] : 이전 scope 로 이동
> [$] : 라인 끝으로 이동
> [^] : 라인 앞으로 이동
## 4. 입력모드
> [o] : 현재 커서 위치 기준 한 행 내리고, 아래 행에서 입력 모드 시작.
> [O] : 현재 커서 위치의 행을 내리고 현재 위치에서 입력 모드 시작.
> [i] : 현재 위치에서 입력 모드 시작.
> [I] : 현재 라인 맨 앞에서 입력 모드 시작.
> [a] : 현재 커서 한칸 뒤에서 입력 모드 시작.
> [A] : 현재 라인 한칸 뒤에서 입력 모드 시작.
## 5. 디렉토리
> [e#] : 디렉토리 네비게이션 출력
> [vi ./] : vi 실행 시, ./ 파라미터를 주면 디렉토리 네비게이션이 출력된다.
> [E] : 상단에 디렉토리 네비게이션 출력, 파일을 열면 뷰 스택에 쌓임.
## 6. 화면 분할
> [vs] : 화면을 반으로 분할한다. (세로 분할)
> [vs20] : 화면을 20 % 분할한다.
> [vs20 ./] : 화면을 20% 분할하고,디렉토리 네비게이션을 출력한다.
> [sv] : 화면을 가로 분할한다.
> [ctrl + ww] : 분할된 화면 이동.
> [ctrl + w, hjkl] : 분할된 화면 방향 커서로 이동.
## 7. 쉘
> [ctrl + z] : 잠시 쉘로 나간다.
> [fg] : 쉘에서 다시 vi로 복귀. (fg명령, 타 프로세스도 동일)
## 8. 자동완성
## 9. 플러그인