vim을 쓰면서 나름대로 아는 내용을 wiki에 정리해서 올리다가..
공유 합니다.
정리 내용은 유닉스리눅스 프로그래밍필수 유틸리티라는 책을 참조 했습니다.
wiki페이지는 그래도 볼만한데, 여기다 붙이니 별로네요 ^^;
pdf로도 만들어 봤으니.. 필요 하신 분은 받아서 사용하세요.
아.. 그리고 잘 못 된 내용이나 오타가 있으면 알려주세요^ ^*
VIM 명령어 정리
1. 저장 및 종료
명령어 |
설명 |
:w |
저장 |
:w file.txt |
file.txt 파일로 저장 |
:w » file.txt |
file.tx파일에 덧붙여서 저장 |
:q |
vi 종료 |
:q! |
vi 강제 종료 |
ZZ |
저장 후 종료 |
:wq! |
강제 저장 후 종료 |
:e file.txt |
file.txt파일을 불러옴 |
:e |
현재 파일을 불러옴 |
:e# |
바로 이전에 열었던 파일을 불러 옴 |
2. 입력모드 전환
a |
커서 위치 다음칸부터 입력 |
A |
커서 행의 맨 마지막부터 입력 |
i |
커서의 위치에 입력 |
I |
커서 행의 맨 앞에서 부터 입력 |
o |
커서의 다음행에 입력 |
O |
커서의 이전 행에 입력 |
s |
커서 위치의 한글자를 지우고 입력 |
cc |
커서위치의 한 행을 지우고 입력 |
3. 이동
h |
왼쪽으로 이동 |
l |
오른쪽으로 이동 |
j |
아래행으로 이동 |
k |
위 행으로 이동 |
w 또는 W |
다음 단어의 첫 글자로 이동 |
b 또는 B |
이전 단어의 첫 글자로 이동 |
e 또는 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행으로 이동 |
4. 삭제
x 또는 dl |
커서 위치의 글자 삭제 |
X 또는 dh |
커서 바로 앞의 글자 삭제 |
dw |
현재 위치부터 스페이스 까지 삭제 |
diw |
현재 위치에 있는 단어 삭제 |
dd |
커서가 있는 행을 삭제 |
[n]dd |
현재 커서 부터 아래 n번째 줄까지 삭제 |
dj |
현재 커서와 아래 줄 삭제 |
[n]dj |
현재 커서 부터 아래 n+1번째 줄까지 삭제 |
dk |
현재 커서와 윗로 n+1번째 줄까지 삭제 |
[n]dk |
현재 커서와 윗 줄 삭제 |
D 또는 d$ |
현재 커서가 있는 위치부터 행 끝까지 삭제 |
d0 또는 d^ |
현재 커서가 있는 위치부터 행 시작 까지 삭제 |
5. 복사 & 붙여넣기
yy 또는 Y |
커서가 있는 한 행 복사 |
p |
현재 커서에 붙여 넣기, 행 복사 일 경우 아래 줄에 붙여넣음. |
P |
현재 커서위치의 앞행에 붙여 넣기, 행 복사일 경우에는 윗 줄에 붙여 넣음 |
[n]yy 또는 [n]Y |
커서가 위치한 이후로 n행 복사 |
[n]p |
n번 만큼 붙여넣기 반복 |
6. 블록 지정
v |
블록 지정 |
V |
줄단위 블록 지정 |
ctrl+v(윈도우에서는 ctrl+q) |
비쥬얼 블록 지정 |
블록 지정 중 명령 |
|
y |
블록 복사 하기 |
r |
치환 |
d |
지정 블록 지우기 |
U |
대문자로 바꾸기 |
u |
소문자로 바꾸기 |
~ |
대소문자 전환 |
J |
행 합침 |
: |
선택 영역에 대하여 ex명령 |
< |
행 앞에 탭 제거 |
> |
행 앞에 탭 삽입 |
7. 문자열 탐색 및 치환
/[문자열] |
문자열 탐색 |
:s/old/new |
현재 행의 처음 old를 new로 교체 |
:s/old/new/g |
현재 행의 모든 old를 new로 교체 |
:10,20s/old/new/g |
10행부터 20행까지 모든 old를 new로 교체 |
[블록지정중]:s/old/new/g |
지정 블록 내에서 모든 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/old/new/g |
pattern이 있는 모든 행의 old를 new로 교체 |
8. vim 정규 표현식
^ |
행의 첫 문자([]안에서는 not의 의미) |
$ |
행의 끝 |
. |
아무 문자나 한 문자 의미 |
\| |
or의 의미 |
[ ] |
[]사이의 문자 중 하나 |
\{min,max\} |
min이상 max이하 반복됨 |
* |
앞의 내용이 0번 이상 반복됨 |
\+ |
앞의 내용이 1번 이상 반복됨 |
\< |
단어의 시작 |
\> |
단어의 끝 |
\n |
새 행 문자 |
\t |
탭 문자 |
9. vim 확장 정규 표현 문자열
\i |
변수 지정에 사용되는 문자들 [0-9A-Za-z] |
\I |
\i와 같지만 숫자는 제외 |
\k |
keyword로 사용하는 문자 [_\.\-0-9A0Za-z] |
\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 |
캐리지 리턴 |
\b |
백스페이스 |
\n |
새 행 |
10. 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진수 |
11. 파일 버퍼
:files 또는 :ls 또는 :buffers |
버퍼 목록 나열 |
:b[n] |
n번 버퍼로 이동 |
:bd[n] 또는 :bw[n] |
n번 버퍼를 삭제 (n이 없으면 현재의 버퍼를 삭제) |
:bp[n] |
이전 버퍼로 이동,n을 붙이면 n번만큼 이전 버퍼로 이동 |
:bn[n] |
이후 버퍼로 이동,n을 붙이면 n번만큼 이후 버퍼로 이동 |
:sb[n] |
창을 수평분할 하여 n번 버퍼를 로드 |
:bf |
첫 번째 버퍼로 이동 |
:bl |
마지막 버퍼로 이동 |
:tabnew |
새로운 탭을 열기 |
:tabnew b.txt |
b.txt가 존재하면 열고, 없으면 새로 만들어서 연다 |
:tabf b.txt |
b.txt가 존재하면 열고, 없으면 에러 발생 |
:tabn[n] |
다음 탭을 열기,n을 붙이면 n번 만큼 이동 |
:tabp[n] |
이전 탭을 열기,n을 붙이면 n번 만큼 이동 |
:tabs |
탭 목록 보기 |
:tabclose |
탭을 닫기 |
:tabfirst |
첫번째 탭을 열기 |
:tablast |
마지만 탭을 열기 |
:tabdo %s/old/new/g |
모든 탭에 적용을 원할 때 (예 모든탭에서 old를 new로 변경) |
13. 다중 창 관련 명령
명령모드 |
ex모드 |
결과 |
창생성 |
||
CTRL-W s |
:[N]sp[plit] |
현재 파일을 두 개의 수평 창으로 나눔 |
CTRL-W v |
:[N]vs[plit] |
현재 파일을 두 개의 수직 창으로 나눔 |
CTRL-W n |
:new |
새로운 수평 창 생성 |
CTRL-W ^ 또는 CTRL-W CTRL-^ |
|
수평 창으로 나누고 이전 파일의 오픈 |
CTRL-W f |
|
창을 수평으로 나누고 커서 위치의 파일 오픈 |
CTRL-W i |
|
커서 위치의 단어가 정의된 파일을 오픈 |
창삭제 |
||
CTRL-W q |
:q[uit]! |
현재 커서의 창을 종료 |
CTRL-W c |
:close |
현재 커서의 창 닫기 |
CTRL-W o |
:on[ly] |
현재 커서의 창만 남기고 모든 창 삭제 |
창이동 |
||
CTRL-W h |
|
왼쪽 창으로 커서 이동 |
CTRL-W j |
|
아래쪽 창으로 커서 이동 |
CTRL-W k |
|
위쪽 창으로 커서 이동 |
CTRL-W l |
|
오른쪽 창으로 커서 이동 |
CTRL-W w |
|
창을 순차적으로 이동 |
CTRL-W p |
|
가장 최근에 이동한 방향으로 이동 |
CTRL-W t |
|
최상위 창으로 이동 |
CTRL-W b |
|
최하위 창으로 이동 |
창이동 |
||
CTRL-W r |
|
순착으로 창의 위치를 순환 |
CTRL-W x |
|
이전 창과 위치를 바꿈 |
CTRL-W H |
|
|
CTRL-W J |
|
|
CTRL-W K |
|
|
CTRL-W L |
|
|
창 크기 조정 |
||
CTRL-W = |
|
창의 크기를 모두 균등하게 함 |
CTRL-W _ |
|
수평 분할에서 창의 크기를 최대화 |
CTRL-W | |
|
수직 분할에서 창의 크기를 최대화 |
CTRL-W [N]+ |
:res[ize] +N |
창의 크기를 N행 만큼 증가 |
CTRL-W [N]- |
:res[ize] -N |
창의 크기를 N행 만큼 감소 |
CTRL-W [N]> |
|
창의 크기를 오른쪽으로 N칸 만큼 증가 |
CTRL-W [N]< |
|
창의 크기를 오른쪽으로 N칸 만큼 감소 |
예) CTRL-W j 는 CTRL-W CTRL-J와 같다.
14. 마킹 및 마킹위치로 이동
m[a-z0-9] |
파일내에서 마킹, 현재 버퍼내에서만 이동 함 예)ma |
m[A-Z] |
전체영역에서 마킹, 다른 파일로도 이동 함. |
`[A-Za-z0-9] |
마킹된 위치로 돌아감 예)`a |
’[A-Za-z0-9] |
마킹된 행의 처으으로 이동함. 예)‘a |
” |
직전에 커서가 위치하던 행의 처음 |
`` |
직전의 커서 위치로 이동 |
’” |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 |
`" |
이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동 |
추가
댓글