Programming/Tool

[VI] VI/VIM 명령어 정리

MB Brad KWON 2013. 4. 18. 19:27

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

다음 단어의 첫 글자로 이동

또는 B

이전 단어의 첫 글자로 이동

또는 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. 삭제

또는 dl

커서 위치의 글자 삭제

또는 dh

커서 바로 앞의 글자 삭제

dw

현재 위치부터 스페이스 까지 삭제

diw

현재 위치에 있는 단어 삭제

dd

커서가 있는 행을 삭제

[n]dd

현재 커서 부터 아래 n번째 줄까지 삭제

dj

현재 커서와 아래 줄 삭제

[n]dj

현재 커서 부터 아래 n+1번째 줄까지 삭제

dk

현재 커서와 윗로 n+1번째 줄까지 삭제

[n]dk

현재 커서와  줄 삭제

또는 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

마지막 버퍼로 이동

 

12. Tab

Vim 7.0부터 추가된 기능

: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을 같이 눌러도 똑같은 역활을 하는 경우가 많다
) 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으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동






'Programming > Tool' 카테고리의 다른 글

[cscope] cscope 사용법  (0) 2013.06.18
[ctags] ctags 사용법  (0) 2013.06.18
[VI/VIM] 개발 환경 설정  (0) 2013.06.18
[Eclipse] 이클립스 단축키  (0) 2012.09.29
[tortoiseSVN] Windows에서 tortoiseSVN을 이용한 SVN 사용하기  (0) 2012.09.27