차례
1. 참고링크
-
DocbookSgml/Vim-KLDP - Vi,Vim활용
-
VIM을 사용하자 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Env/UsedVim
-
Vim documentation: help http://vimdoc.sourceforge.net/htmldoc/
2. Vim 팁 모음
2.1. 치환 기능 사용하기
vim 사용 중 문자나 단어를 치환해야할 일이 생겼을 경우 바꿔야될 대상의 갯수가 작다면 단순히 커서를 이동해서 수정하면 된다. 하지만 갯수가 많다면 vim 의 치환 기능을 사용하여 손쉽게 수정 가능하다. vim 의 다른 기능과 마찬가지로 정규표현식으로 처리가능하다.
- 기본 사용법
:[범위]s/[oldpattern]/[newpattern]/ # 기본 형식 :%s/\<찾을글자\>/치환될글자/gc # 전체 영역 :'<,'>s/찾을글자/치환될글자/gc # 블럭 지정 영역 (VISUAL 모드)
부분
설명
%
현재 파일
'<,'>
블럭 지정 영역
\< \>
정확히 일치하는 글자
g
라인 전체
c
치환여부 확인
- 사용 예)
# 파일 전체에서 char 를 _char_ 로 치환한다. :%s/char/_&_/g # 현재 커서 위치부터 파일 끝까지 모든 char 를 _char_ 로 치환한다. :.,$s/char/_&_/g # 파일의 1~10 라인 사이에서 buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다. :1,10s/buf_.*\[255\]/hello/g
2.2. 줄바꿈 문자 변환하기
텍스트 파일을 처리할 때 unix 나 dos, mac 등 각 운영체제에 따라 줄바꿈 문자가 다르다. 그래서 불편한 경우가 많은데... linux 에서 vim 을 사용할 때 단순히 문자치환으로 바꿀 수 있지만 아래의 방법을 이용하면 간단히 처리가 가능하다.
: set ff=unix
그리고 저장하면 된다.
참고> unix 대신에 dos, mac 을 사용하면 해당 운영체제에 맞게 바뀐다.
2.3. 소스 코드를 html로 변환하기
vim 의 여러가지 기능 중에 눈에 띄는 기능 중 하나로 편집 중인 코드를 HTML 형태로 저장하는 기능으로 이용하면 syntax highlight 된 상태 그대로 HTML로 변환이 가능하다. 소스 코드의 예제를 만들어서 웹 상에 올리고자 할때 유용하게 사용할 수 있는 기능으로 사용법은 간단하다.
: so $VIMRUNTIME/syntax/2html.vim
시간이 조금 걸린 후 변환된 내용이 화면 출력되면 저장하면 된다.
2.4. 문서 암호화 하기
vim 에디터에서 문서 암호화가 가능하다. RedHat Linux 7.2 이상에서 제공되고 있는 vim (버젼 5.7 이상) 에서만 가능하며 사용방법은 다음과 같다.
- 암호화 하기
- set 명령
: set key=<Password>
파일을 저장한다. - X 명령
: X<Enter>
Password 를 입력한(두번) 후 파일을 저장한다.참고> X 명령은 대문자 입니다.
- set 명령
- vim 에서 파일 읽기
- vi 에서 파일을 열기 전에 Password 를 입력하라는 메세지가 출력될 때 Password를 입력하면 된다.
- 암호화 해제
- set 명령
: set key=
파일을 저장한다. - 편집 저장 파일을 열고 간단히 편집한 후 저장하면 암호화가 해제된다.
- set 명령
2.5. 자동들여쓰기 해제하기
vim 으로 코딩할 때 편리한 기능 중에 하나가 자동 들여쓰기가 아닐까 라고 생각한다.
그러나 자동 들여쓰기 기능이 너무 좋아서 불편한 경우가 있다. 주로 telnet 을 이용할 때 웹이나 다른 창에서 소스를 끍어붙이면 소스가 엉망으로 삽입된다. 이유는 vim 이 들여쓰기만 자동으로 실행되고 내어쓰기는 되지않기 때문이다.
하지만 자동 들여쓰기는 vi 의 옵션중에 하나 이기 때문에 다음과 같이 필요에 따라 해제하면 된다.
: set noautoindent 또는 : set noai
그리고 다시 자동 들여쓰기 기능을 사용하고 싶다면 다음과 같이 설정한다.
: set autoindent 또는 : set ai
똑똑한 유저라면 필요에 따라 적절히 선택할 수 있을 것이라고 생각한다.
2.6. 문법에 맞게 들여쓰기 재정렬하기
vim 에서는 C/C++ 파일이나 기타 다른 언어의 파일들을 각각의 문법에 맞게 들여쓰기를 재정렬할 수 있다. 자동 들여쓰기는 코드 입력 과정에서 사용되지만 들여쓰기 재정렬 기능은 코드가 입력된 후에 일괄 처리할 수 있어서 편리하다.
-
키
설명
=
선택된 영역을 들여쓰기 처리
=a{
현재 블럭을 들여쓰기 처리
gg=G
전체 내용을 들여쓰기 처리
2.7. 파일 삽입하기
vim 에서는 현재 편집 중인 파일에 다른 파일 내용을 삽입할 수도 있으며 명령이 실행된 결과를 삽입할 수도 있다.
- 파일 삽입
:r 파일명
- 명령의 실행 결과 삽입
:r! 명령어
2.8. 열어본 파일 이동하기
vim 을 통하여 열어본 파일 사이를 이동하는 방법이 있다. 이전에 열어봤던 파일이 히스토리에 남아있다면 역시 열어볼 수 있다. 필요성이 있을지는 모르겠지만 간단한 키조작으로 이동가능하다.
-
키
설명
<Ctrl+O>
이전 파일로 커서를 이동
<Ctrl+I>
다음 파일로 커서를 이동
3. vim 의 fold 기능
3.1. fold 키
-
키
설명
키
설명
zf
폴더 생성 (접기)
zd
폴더 삭제 (펴기)
zo
폴더 펴기
zc
폴더 접기
za
폴더 접기/편기 (토글)
zi
폴더 기능 On/Off
zj
다음 폴더로 이동
zk
이전 폴더로 이동
3.2. fold 기능 옵션
- fold 옵션 - 폴더 정보 저장 방식 지정 (vim 도움말 참고)
: set foldmethod=manual
- fold 정보 저장/읽기
-
폴더 정보 저장 파일: ~/.vim/view
명령
설명
:mkview
폴더 정보 저장
:loadview
폴더 정보 읽기
-
- fold 정보 자동 저장/읽기
-
vim 설정 추가: ~/.vimrc
명령
설명
au BufWinLeave *.[ch]* mkview
*.c* 또는 *.h* 파일을 로딩시 폴더 정보 저장
au BufWinEnter *.[ch]* silent loadview
*.c* 또는 *.h* 파일을 로딩시 폴더 정보 읽기
-
4. vim 키 정리
4.1. 커서 이동 키
-
키
설명
H
화면의 첫 줄로 이동
M
화면의 중간 줄로 이동
L
화면의 마지막 줄로 이동
%
괄호 ([], {}, ()) 가 일치하는 위치로 이동
키
설명
키
설명
w
다음 단어의 첫 글자로 이동
W
'w' 와 동일. WORD 단위 이동
e
다음 단어의 마지막 글자로 이동
E
'e' 와 동일. WORD 단위 이동
b
앞 단어의 첫 글자로 이동
B
'b' 와 동일. WORD 단위 이동
ge
앞 단어의 마지막 글자로 이동
gE
'ge' 와 동일. WORD 단위 이동
참고> WORD 단위: 공백있는 위치까지 하나의 단어로 인식
4.2. 스크롤 키
-
키
설명
키
설명
<Ctrl+B>
한 화면씩 위로 스크롤
z<CR>
커서가 위한 줄을 화면 처음으로 이동
<Ctrl+F>
한 화면씩 아래로 스크롤
zt
'z<CR>' 과 동일, 현재 컬럼 유지
<Ctrl+U>
화면의 절반씩 위로 스크롤
z.
커서가 위한 줄을 화면 중앙으로 이동
<Ctrl+D>
화면의 절반씩 아래로 스크롤
zz
'z.' 과 동일, 현재 컬럼 유지
<Ctrl+Y>
현재 커서 위치를 유지하면서 위로 스크롤
z-
커서가 위한 줄을 화면 아래으로 이동
<Ctrl+E>
현재 커서 위치를 유지하면서 아래로 스크롤
zb
'z-' 과 동일, 현재 컬럼 유지
4.3. 블럭 지정 (VISUAL 모드) 키
-
키
설명
v
문자 단위로 블럭 지정
V
줄 단위로 블럭 지정
<Ctrl+V>
세로 단위 블럭 지정
4.4. tags 기능
모든 tags 명령에서 근접단어를 입력한 후
-
키
설명
<Ctrl+D>
근접단어로 시작하는 tag 목록 출력
4.5. 특수 키
숫자 위에 커서를 이동 시킨 후
-
키
설명
<Ctrl+A>
숫자 증가
<Ctrl+X>
숫자 감소
4.6. Function 키 정의
vim 에서는 <F1> ~ <F12> 키에 기능을 정의할 수 있다. 홈디렉토리의 .vimrc 파일에 아래의 내용을 추가한 후 vim 을 실행시키면 된다. 단, CRT ( http://www.vandyke.com ) 와 같이 Function 키 입력이 가능한 터미널 프로그램에서만 가능하다.
" vim 의 편집 기능키 정의 " "-------------------------" map <F1> K " 도움말 map <F2> :w!<CR> " 파일 저장 map <F3> [{v]}zf " 함수 축소 map <F4> zo " 축소 해제 map <F5> ^] " tags 추적 map <F6> ^T " tags 복귀 map <F7> :tnext<CR> " 다음 tags 검색 map <F8> [i " 함수 원형 보기 map <F9> gd " 지역 변수 보기 map <F10> '' " 원래 위치로 복귀 map <F11> :n<CR> " 다음 파일로 전환 map <F12> :N<CR> " 이전 파일로 전환
5. vim 의 프로그래밍 지원 기능
5.1. 자동 완성 기능
입력 모드에서 함수 또는 변수명 입력 시 자동완성 기능을 사용할 수 있다.
-
키
설명
^P
일치하는 이전 단어 를 검색
^N
일치하는 다음 단어 를 검색
5.2. 검색 기능
소스 코드 중 함수 또는 변수명, 헤더 파일명 위에 커서를 옮겨놓고 아래의 키를 누르면 해당 기능이 동작한다.
-
키
설명
gd
지역 변수 찾기
gD
전역 변수 찾기
' '
원래 위치로 복귀
<Ctrl+wi>
함수가 선언된 위치로 이동
<Ctrl+wf>
헤더 파일을 연다.
K
함수의 도움말 (man page) 보기
5.3. 이동 기능
소스 코드 중 함수 또는 변수명, 매크로 위에 커서를 옮겨놓고 아래의 키를 누르면 해당 기능이 동작한다.
- 식별자 (함수 또는 변수) 에 대한 기능
키
설명
키
설명
[I
해당 식별자가 있는 라인 목록 보기
]I
커서 이후 해당 식별자가 있는 라인 목록 보기
[i
[I 목록 중 첫번째 보기
]i
]I 목록 중 첫번째 보기
[<Tab> 또는
[<Ctrl+I>[I 목록 중 첫번째 위치로 이동
]<Tab> 또는
]<Ctrl+I>]I 목록 중 첫번째 위치로 이동
-
#define 으로 정의된 매크로 또는 상수에 대한 기능
키
설명
키
설명
[D
해당 식별자가 있는 라인 목록 보기
]D
커서 이후 해당 식별자가 있는 라인 목록 보기
[d
[D 목록 중 첫번째 보기
]d
]D 목록 중 첫번째 보기
'이것 저것.. > ProgramGuide' 카테고리의 다른 글
Eclipse기반 크로스플랫폼 개발 환경 (0) | 2009.04.10 |
---|---|
Trac으로 Project를 관리해 보자 (0) | 2009.02.05 |
Portable 프로그램 만들기 - Portable MindMapper v5.0 (0) | 2009.01.19 |
Apache + Subversion + Trac 설치 가이드 (0) | 2009.01.09 |
Doxygen 설정 (0) | 2008.04.16 |