2011. 6. 27. 09:52

[ 저장 및 종료 ]

[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 {질의 종류} {심볼}
ex_) :cs find s start_kernel

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

이 파일을 포함하는 파일들 찾기

Posted by devanix