##vim의 여러가지 기능 ###파일탐색 * explorer 플러그인 실행: `:20vs .` vs는 vertical split이고 20은 창의 크기를 의미한다. * NERDTree 플러그인 실행: `:NERDTree` ###빠른 괄호 이동 여는 괄호 혹은 닫는 괄호에 커서를 놓고 `%` 키를 누르면 괄호 쌍으로 이동한다. ###빠른 탐색 찾는 단어에 커서를 두고 `*` 키나 `#` 키를 누르면 커서에 위치한 단어와 같은 문자열을 찾아서 다음위치 혹은 이전 위치로 이동한다. 이는 /[찾으려는 문자열] 혹은 ?[찾으려는 문자열] 명령과 같은 기능을 한다. ###블록 선택 * '{}' 영역을 블록 선택: 표준모드에서 `{`위에 커서를 위치 시킨 후 `v]}` 키를 누른다. ###폴딩 기능 이용하기 * 블록을 폴딩하기: 블록으로 영역을 선택을 한 후 `zf` 키를 누른다. * `{}` 블록을 폴딩하기: 표준모드에서 `{`위에 커서를 위치 시킨 후 `v]}zf` 키를 누른다. `v]}`은 괄호 쌍에 대한 블록을 지정하는 기능이다. * 언폴딩: 접힌 부분에서 `??` 혹은 `zo`를 누른다. `~/.vimrc`에서 단축키 설정 "folding map v]}zf "unfolding map zo ###함수의 원형 간단 확인 단축키 *see* ctags 사용하기: [ctags.md](#file-ctags-md) ###지역변수의 선언 부분으로 이동 단축키 *see* ctags 사용하기: [ctags.md](#file-ctags-md) ##(여러 행에) 탭을 일괄적으로 삽입 제거 하기 [N]>> 또는 [N]<< 블록을 지정하고 `>` 혹은 `<` 키를 쳐도 위와 같게 작동한다. ##탭 사이즈 조정하기 * ts(tabstop): 문서 내의 '\t' 문자를 몇 칸으로 보여줄지를 정한다--number of spaces a `` in the text stands for `:set ts=8` * sw(shiftwidth): >> 혹은 << 키로 탭 사이즈를 조절할 때, 자동 줄 맞추기시 들여쓰기 시 사용되는 칸 수이다--number of spaces used for each step of (auto)indent `:set sw=2` * sts(softtabstop): Tab 키를 눌렀을 때 표시되는 간격을 정한다--if non-zero, number of spaces to insert for a `:set sts=0` * et(expandtab): 탭키를 눌렀을 때 스페이스로 확장할 지 아니면 '\t'로 확장할 지를 결정--expand to spaces in Insert mode `:set noet` `:set et` ###소스 정렬 하기 ###블록의 소스 정렬 블록을 지정한 후 `=` 키를 누른다. ###블록없이 소스 전체를 정렬 gg=G ###`^M` 문자: Window 시스템의 개행문자 윈도우 시스템의 개행문자(\r\n)를 Unix형식(\n)으로 변경하기 ####fileformat변경 :set fileformat==dos ####치환명령 :%s/^M//g 여기서 `^M`을 직접입력하는 것이 아니라 `+v`키를 누른다. *참고:* * `^[` : `+v` 키 * `^[[11~` : `+v` 키 * `^[[12~` : `+v` 키 ###현재 커서 위치의 단어의 삽입 ####명령창 * `+R +W`: 현재 커서 위치의 단어를 명령창에 넣는다. 도움말 `:help c_CTRL-R` * nmap: 단축키 설정 예: `nmap ,st :call Sts()` ####내장 스크립트 함수 * ``: 현재 커서 위치의 단어 * `expand("")`: ? ###파일비교 명령창에서 $ vimdiff copying copying.org * [sample-copying](#file-sample-copying) * [sample-copying.org](#file-sample-copying-org) 혹은 vim내에서 쉘명령 수행을 통해 meld등을 수행한다. ###커서 위치의 파일 열기 우선 `vim`이 파일을 열수 있는 폴더의 위치를 `path` 변수에 지정해야한다. `.vimrc`에 지정한다. 예 set path=/usr/local/lib/node\_modules:/usr/include:~/projects/example1 `vim` 내에서 열려는 파일명이 있는 곳에 커서를 위치시킨 후 `+wf`를 입력하면 수평 분할이 되면서 파일이 열린다. ###여러가지 변수 값을 출력하기 변수명 뒤에 `?` 기호를 붙여서 내용을 출력할 수 있다. 예 :set filetype? :set path? :set tabstop? ###단어자동완성 `+p`: 커서의 위치에서 위로 검색, 코딩을 할 때 유요함. `+n`: 커서의 위치에서 아래로 검색 ###정규표현식의 매칭문자 사용 예 aaa=YES aaa=NO 위의 문자열을 가지고 아래와 같게 되도록 하고자 할 때 치환명령을 사용할 수 있다. ccc=YES, ddd=YES ccc=NO, ddd=NO 치환명령 :%s/aaa=\(YES\|NO\)/ccc=\1, ddd=\1/gc 위 치환명령은 정규식의 그룹기능을 사용하는 한 예이다.