문자열 치환
:%s/abc/def/g abc가 def로 전역에서 바뀐다
:%s/abc/def/c 검사
디렉토리 띄우기
:vs ./ 현재 디렉토리 띄워줌
:(숫자)vs ./ 입력한 숫자 만큼 조정된 크기의 창으로 현재 디렉토리를 띄위 줌
ex) :30vs ./
디렉토리 목록이 뜨는데 방향키로 왔다갔다 하면서 폴더 간에 이동도 하고 파일도 열 수 있다.
빠르게 괄호 파악하기
{} () [] 간에 이동할 때 그 기호 위에서 %기호 사용
괄호 많이 써놓고 어떤 괄호가 어디에 걸리는지 헷갈릴 때 좋다.
폴딩 기능
- visual block 잡기: ctrl+v를 원하는 블럭의 첫 뿐에서 입력한 후 방향키로 원하는 만큼 블럭을 잡는다.
- 윈도에서는 ctrl+v가 붙여넣기 단축키이기 때문에 이 키를 사용 못하는 경우가 있는데, http://vi.kldp.org/jsboard/read.php?table=qna2006&no=2240&page=2 을 참고하면 해법이 나와있다.
- ctrl+v는 visual block을 직사각형 형태로 잡아준다. v만 사용하면 단어마다 V(shift+v)는 줄마다 visual block을 잡는다.
- (명령모드에서)zf를 이용하면 해당영역이 접힌다.
- zo를 사용하면 접힌 영역을 원상태로 복구할 수 잇다.
- zc를 사용하면 해당영역을 다시 접을 수 있다
- 다중 접기를 허용함로 접은 구역을 다시 접을 수도 있다. //더 자세한 내용은 참고 자료를;;
파일마다 탭 크기 따로 지정
html: <!-- vi: set ts=8 sts=2 sw=2: -->
C: /*vi: set ts=8 sts=2 sw=2:*/
파이썬: #vi: set ts=8 sts=2 sw=2:
파일의 최상단이 최하단에 각 소스파일의 주석 형태로 위를 넣어주면 열 때 자동으로 설정된다.
소스 정렬하기
정렬을 원하는 소스의 부분을 비주얼 블럭으로 지정하고 =키를 입력하면 자동으로 정렬이 이뤄진다. 전체는 gg=G 키를 순서대로 입력하면 된다. (멋지다!)
gg는 맨 처음으로 이동하는 명령어, G는 가장 마지막으로 이동하는 명령어, =는 선택된 내용을 인덴트하는 명령어이다 이 셋을 조합한 명령어가 위에 나온 명령어이다.
^M문자 제거
윈도는 엔터가 \r\n인데 리눅스는 \n이라서 발생하는 문제
간단하게 해결하려면 set fileformat=dos
또는 치환명령으로 :%/^M//g
여기서 ^M 문자는 ctrl+v+ctrl+m으로 입력한다. (^을 입력하는 법이 ctrl+v)
제일 간단한 방법은 pico로 열어서 저장하고 vim으로 열면 ^M문자가 제거되어 있다.
파일 변경 내역 비교
vimdiff 로 비교할 수 있다.
두 파일을 비교하려면 vi -d file1 file2 처럼 한다.
자동 완성
함수나 변수의 일부를 입력한 상태에서
ctrl+p 커서 위치에서부터 위를 향하면서 자동완성이 가능한 단어가 있는지 찾는다.
ctrl+n 아래로 내려가면서 찾는다.
변수 지어놓고 이름 까먹었거나, 정확하게 입력하려 확인차 쓰면 유용할 듯.
다수의 파일 편집
vim source01.c source02.c source03.c
그러면 source01.c가 나타난다. 두 번째 파일을 편집하려면 :b2를 입력한다
세 번째 파일 편집화면은 :b3 첫 번째는 :b1
현재의 파일을 닫으려면 :bw
셸 명령어 사용
:!명령어
잠시 빠져나가 명령이 실행된 후 다시 vim으로 돌아올 수 있다
다른 방법으로는 Ctrl+z를 이용해 셸로 빠져 나가 작업이 가능하다.
(셸의 작업 제어 기능을 쓰는 방법이다.)
fg 명령어를 이용해 다시 vim 편집 상태로 돌아온다. vim을 안 끄고 컴파일 해 볼 수 있다는 게 장점!
ctags
ctags *
현재 디렉토리에 있는 모든 파일에 관한 tags 정보를 만들어 준다.
ctags -R
만일 모든 하위 디렉토리에 대해 tags 정보를 작성하려면 위 명령어 이용.
명령어를 실행 후 tags란 파일이 생성된다.
각 필드는 탭으로 나뉜다.
- 첫 번째 필드는 함수 이름
- 두 번째 필드는 함수가 정의된 파일의 이름
- 세 번째 필드는 해당 파일에서 vim이 함수명을 찾아가게 하는 vimcommand이다.
- 네 번째 필드는 해당 함수의 타입이다. f라면 일반 C함수 c는 클래스에 선언된 멤버함수 d는 define된 값
분석 도중 모르는 함수가 나와 함수 원형으로 이동하고 싶다면 함수에 커서를 위치시키고 Ctrl +]
함수에 대한 분석을 마치고 원래 분석하던 소스 파일로 돌아오려면 Ctrl+t
http://home.postech.ac.kr/~kypark/linux-apps/vimctags.html
Reference
- http://wiki.kldp.org/wiki.php/VimTutorKo
- http://kltp.kldp.org/stories.php?story=01/02/21/6959042&topic=25
- http://wiki.kldp.org/wiki.php/ViEditorTips <- Copy&Paste할 때 자동인덴트 막기, 현재 작업중인 파일 HTML로 보관하기, 한 파일 여러 곳 동시에 편지하기. kldp wiki에 이렇게 유용한 문서가 많은지 몰랐어요.
- http://gene.kias.re.kr/~newton/wiki/moin.cgi/VimTip
- http://lightyellow.postech.ac.kr/~noh9pil/wordpress/?page_id=319
이 글은 스프링노트에서 작성되었습니다.