[ 저장 및 종료 ]
[ex모드] |
[설명] |
:w |
저장 |
:w file.txt |
file.txt 파일로 저장 |
:w >> file.txt |
file.txt 파일에 덧붙여서 저장 |
:q |
vi 종료 |
:q! |
vi 강제 종료 |
ZZ |
저장 후 종료 |
:wq! |
강제 저장 후 종료 |
:e file.txt |
file.txt 파일을 불러옴 |
:e |
현재 파일을 불러옴 |
[ 입력모드 전환 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
a |
커서 윈치 다음 칸부터 입력 |
A |
커서 행의 맨 마지막부터 입력 |
i |
커서의 위치에 입력 |
I |
커서 행의 맨 앞에서부터 입력 |
o |
커서의 다음 행에 입력 |
O |
커서의 이전 행에 입력 |
s |
커서 위치의 한 글자를 지우고 입력 |
S(cc) |
커서 위치의 한 행을 지우고 입력 |
[ 이동 ]
[명령] |
[설명] |
[명령] |
[설명] |
H |
왼쪽으로 이동(←) |
l |
오른쪽으로 이동(→) |
j |
아래 행으로 이동(↓) |
k |
위 행으로 이동(↑) |
w or W |
다음 단어의 첫 글자로 이동 |
b or B |
이전 단어의 첫 글자로 이동 |
e or E |
단어의 마지막 글자로 이동 |
<CR> |
다음 행의 첫 글자로 이동 |
^ |
그 행의 첫 글자로 이동 |
$ |
그 행의 마지막 글자로 이동 |
+ |
다음 행의 첫 글자로 이동 |
- |
위 행의 첫 글자로 이동 |
( |
이전 문장의 첫 글자로 이동 |
) |
다음 문장의 첫 글자로 이동 |
{ |
이전 문단으로 이동 |
} |
다음 문단으로 이동 |
H |
커서를 화면의 맨 위로 이동 |
z<CR> |
현재 행을 화면의 맨 위로 이동 |
M |
커서를 화면의 중앙으로 이동 |
z. |
현재 행을 화면의 중앙으로 이동 |
L |
커서를 화면 최하단으로 이동 |
z- |
현재 행을 화면의 최하단으로 이동 |
[n]H |
커서를 위에서 n행으로 이동 |
[n]L |
커서를 아래에서 n행으로 이동 |
<Ctrl>+u |
반 화면 위로 스크롤 |
<Ctrl>+d |
반 화면 아래로 스크롤 |
<Ctrl>+b |
한 화면 위로 스크롤 |
<Ctrl>+f |
한 화면 아래로 스크롤 |
gg, 1G |
문서의 맨 첫 행으로 이동 |
G |
문서의 맨 마지막 행으로 이동 |
[n]G |
n행으로 이동 |
:[n]<CR> |
n행으로 이동 |
[ 삭제 ]
[명령모드] |
[설명] |
x, dl |
커서 위치의 글자 삭제 |
X, dh |
커서 바로 앞의 글자 삭제 |
dw |
한 단어를 삭제 |
d0 |
커서 위치부터 행의 처음까지 삭제 |
D, d$ |
커서 위치부터 행의 끝까지 삭제 |
dd |
커서가 있는 행을 삭제 |
dj |
커서가 있는 행과 그 다음 행을 삭제 |
dk |
커서가 있는 행과 그 앞 행을 삭제 |
[ 복사 & 붙이기 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
yy |
커서가 위치한 한 행 복사 |
p |
붙여넣기 |
[n]yy |
커서가 위치한 이후로 n행 복사 |
[n]p |
n번만큼 붙여넣기 반복 |
[ 블록 지정 관련 ]
[명령] |
[설명] |
[명령] |
[설명] |
v |
블록 지정 |
<Ctrl>+v |
비쥬얼 블록 지정 |
~ |
대소문자 전환 |
d |
삭제 |
y |
복사 |
c |
치환 |
> |
행 앞에 탭 삽입 |
< |
행 앞에 탭 제거 |
: |
선택된 영역에 대하여 ex명령 |
J |
행을 합침 |
U |
대문자로 만듦 |
u |
소문자로 만듦 |
[ 문자열 탐색 및 치환 ]
[ex모드] |
[설명] |
/[문자열] |
문자열을 탐색 |
:s/old/new |
현재 행의 처음 old를 new로 교체 |
:s/old/new/g |
현재 행의 모든 old를 new로 교체 |
:10,20s/old/new/g |
10행부터 20행까지 모든 old를 new로 교체 |
:-3,+4s/old/new/g |
현재 커서 위치에서 3행 위부터 4행 아래까지 old를 new로 교체 |
:%s/old/new/g |
문서 전체에서 old를 new로 교체 |
:%s/old/new/gc |
문서 전체에서 old를 new로 확인하며 교체 |
:g/pattern/s//new/g |
:%s/old/new/g와 동일 |
[ vim 정규 표현식 ]
[메타문자] |
[설명] |
[메타문자] |
[설명] |
^ |
행의 첫 문자([]안에서는 not의 의미) |
$ |
행의 끝 |
. |
아무 문자나 한 문자 의미 |
\| |
or의 의미 |
[ ] |
[]사이의 문자 중 하나 |
\{min,max\} |
min 이상 max 이하 반복됨 |
* |
앞의 내용이 0번 이상 반복됨 |
\+ |
앞의 내용이 1번 이상 반복됨 |
\< |
단어의 시작 |
\> |
단어의 끝 |
\n |
새 행 문자 |
\t |
탭 문자 |
[ vim 확장 정규 표현 문자열 ]
[이스케이프] |
[설명] |
\i (소문자 아이) |
변수 지정에 사용되는 문자들 [_0-9A-Za-z] |
\I (대문자 아이) |
\i와 같지만 숫자는 제외 |
\k |
keyword로 사용하는 문자 [_\.\-0-9A-Za-z] |
\K |
\k와 같지만 숫자는 제외 |
\f |
파일 이름으로 사용하는 문자 |
\F |
\f와 같지만 숫자는 제외 |
\p |
프린트 가능한 문자 |
\P |
\p와 같지만 숫자는 제외 |
\s |
whitespace character(공백과 탭) |
\S |
non-whitespace character |
\d |
숫자 [0-9] |
\D |
숫자가 아닌 문자 [^0-9] |
\x |
16진수 숫자 [0-9A-Fa-f] |
\X |
16진수 숫자가 아닌 문자 [^0-9A-Fa-f] |
\o |
8진수 숫자 [0-7] |
\O |
8진수 숫자가 아닌 문자 [^0-7] |
\w |
영문 단어에서 사용되는 문자 [0-9A-Za-z-] |
\W |
영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-] |
\h |
영문 단어의 시작에 사용되는 문자 [A-Za-z-] |
\H |
영문 단어의 시작에 사용되지 않는 문자 [^A-Za-z-] |
\a |
모든 알파벳 [A-Za-z] |
\A |
알파벳이 아닌 문자 [^A-Za-z] |
\l (소문자 엘) |
소문자 [a-z] |
\L |
소문자가 아닌 문자 [^a-z] |
\u |
대문자 [A-Z] |
\U |
대문자가 아닌 문자 [^A-Z] |
\e |
<ESC> |
\t |
<TAB> |
\r |
캐리지 리턴 (CR) |
\b |
백스페이스(BS) |
\n |
새 행(LF) |
[ POSIX 문자 클래스 ]
[문자 클래스] |
[내용] |
[:alnum:] |
알파벳과 숫자 [A-Za-z0-9] |
[:alpha:] |
알파벳 [A-Za-z] |
[:cntrl:] |
제어 문자 |
[:blank:] |
탭과 공백 문자 |
[:digit:] |
숫자 [0-9] |
[:graph:] |
제어 문자와 공백 문자를 제외한 문자 |
[:lower:] |
소문자 [a-z] |
[:upper:] |
대문자 [A-Z] |
[:print:] |
제어 문자를 제외한 문자. 즉 프린터 할 수 있는 문자 |
[:punct:] |
[:graph:] 문자 중 [:alnum:]을 제외한 문자. (ex: !, @, #, $, %, ^....) |
[:space:] |
화이트 스페이스 (ex: 공백, 탭, 캐리지 리턴, 새 행, 수직 탭, 폼 필드) |
[:xdigit:] |
16진수 |
[ 파일 버퍼 관련 명령 요약 ]
[ex모드] |
[설명] |
:buffers |
버퍼의 내용을 나열 |
:files or :ls |
버퍼의 내용을 나열 |
:b[n] |
n번 버퍼로 이동 |
:bd[N] |
n 버퍼를 삭제(n이 없으면 현재의 버퍼를 완전 삭제) |
:bw[n] |
n 버퍼를 완전 삭제(n이 없으면 현재의 버퍼를 완전 삭제) |
:bp[n] |
이전 버퍼로 이동. n을 붙이면 n번만큼 이전 버퍼로 이동 |
:bn[n] |
이후 버퍼로 이동. n을 붙이면 n번만큼 이후 버퍼로 이동 |
:sb[n] |
창을 수평 분할하여 n번 버퍼를 로드 |
:bf |
첫 번째 버퍼로 이동 |
:bl |
마지막 버퍼로 이동 |
:al |
현재 열려 있는 모든 버퍼를 수평 분할 창에 로드 |
[ 마킹 및 마킹한 위치로 이동 ]
[명령모드] |
[설명] |
[명령모드] |
[설명] |
ma |
a로 마킹, mb는 b로 마킹... |
|
|
`a |
a로 마킹된 위치로 돌아감 |
'a |
a로 마킹된 행의 처음으로 돌아감 |
' ' |
직전에 커서가 위치하던 행의 처음 |
` ` |
진전의 커서 위치로 이동 |
' " |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 |
` " |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동 |
[ 다중 창 관련 명령 ]
-[ 창 생성 ]- |
||
[명령모드] |
[ex모드] |
[결과] |
<Ctrl>+w s |
:sp[plit] |
현재 파일을 두 개의 수평 창으로 나눔 |
<Ctrl>+w v |
:[n]vs[plit] |
새로운 수직 창 생성, n이 붙으면 n칸 크기의 창 분할 |
<Ctrl>+w n |
:new |
새로운 수평 창 생성 |
<Ctrl>+w ^ |
|
수평 창으로 나누고 이전 파일의 오픈 |
<Ctrl>+w f |
|
창을 수평으로 나누고 커서 위치의 파일을 오픈 |
<Ctrl>+w i |
|
커서 위치의 단어가 정의된 파일을 오픈 |
-[ 창 삭제 ]- |
||
<Ctrl>+w q |
:q[uit]! |
현재 커서의 창을 종료 |
<Ctrl>+w c |
:clo[se] |
현재 커서의 창을 닫음 |
<Ctrl>+w o |
:on[ly] |
현재 커서의 창만 남기고 모든 창 삭제 |
-[ 창 이동 ]- |
||
<Ctrl>+wh |
|
왼쪽 창으로 커서 이동 |
<Ctrl>+wj |
|
아래쪽 창으로 커서 이동 |
<Ctrl>+wk |
|
위쪽 창으로 커서 이동 |
<Ctrl>+wl |
|
오른쪽 창으로 커서 이동 |
<Ctrl>+ww |
|
창을 순차적으로 이동 |
<Ctrl>+wp |
|
가장 최근에 이동한 방향으로 이동 |
<Ctrl>+wt |
|
최상위 창으로 이동 |
<Ctrl>+wb |
|
최하위 창으로 이동 |
-[ 창 위치 바꾸기 ]- |
||
<Ctrl>+wr |
|
순차적으로 창의 위치를 순환 |
<Ctrl>+wx |
|
이전 창과 위치를 바꿈 |
-[ 창 크기 조정 ]- |
||
<Ctrl>+w = |
|
창의 크기를 모두 균등하게 함 |
<Ctrl>+w _ |
|
수평 분할에서 창의 크기를 최대화 |
<Ctrl>+w | |
|
수직 분할에서 창의 크기를 최대화 |
<Ctrl>+w [n]+ |
:res[ize] +n |
창의 크기를 n행만큼 증가 (Ctrl+w +는 1행만큼 증가) |
<Ctrl>+w [n]- |
:res[ize] -n |
창의 크기를 n행만큼 감소 (Ctrl+w -는 1행만큼 증가) |
<Ctrl>+w [n]> |
|
창의 크기를 오른쪽으로 n칸만큼 증가(수직 창에 한함) |
<Ctrl>+w [n]< |
|
창의 크기를 왼쪽으로 n칸만큼 증가(수직 창에 한함) |
[ ctags 관련 명령 ]
[ex모드] |
[설명] |
:ta [tag] or <Ctrl>+] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 점프. 현재 위치는 stack에 push된다. |
:ts [tag] or :서 [tag] |
|
:po or <Ctrl>+t |
stack top에 저장된 위치를 pop하고 그 위치로 점프 |
:sts [tag] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시 |
:stj [tag] |
|
:tn |
tj나 ts로 점프했을 때 다음 tag로 점프 |
:tp |
tj나 ts로 점프했을 때 이전 tag로 점프 |
:tr |
tj나 ts로 점프했을 때 처음 tag로 점프 |
:tl |
tj나 ts로 점프했을 때 마지막 tag로 점프 |
:pts [tag] |
[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시하지만 커서는 현재 위치에 유지 |
:ptj [tag] |
미리보기 윈도우에 tag가 정의된 형식을 보임 |
:ptn |
ptj나 pts로 점프했을 때 다음 tag로 점프 |
:ptp |
ptj나 pts로 점프했을 때 이전 tag로 점프 |
:ptr |
ptj나 pts로 점프했을 때 처음 tag로 점프 |
:ptl |
ptj나 pts로 점프했을 때 마지막 tag로 점프 |
[ cscope 관련 명령 ]
:cs find {질의 종류} {심볼} |
|
0 or s |
이 C symbol 찾기 |
1 or g |
이 정의 찾기 |
2 or d |
이 함수에 의해 불려지는 함수들 찾기 |
3 or c |
이 함수를 부르는 함수들 찾기 |
4 or t |
Find assignments to |
6 or e |
이 egrep 패턴 찾기 |
7 or f |
이 파일 찾기 |
8 or i |
이 파일을 포함하는 파일들 찾기 |
'Essential Tools > VIM - Vi IMproved' 카테고리의 다른 글
Vim 편집기로 스크립트 작성하기 (0) | 2011.09.23 |
---|---|
[VIM Plugin] T-Commant (0) | 2011.09.22 |
[VIM Plugin] snipMate (0) | 2011.09.22 |
[VIMRC] Personal Vim Initializations (개인 환경 설정) (0) | 2009.12.20 |