본문 바로가기
2_ 바삭바삭 프로그래밍/IDE or etc.

[Linux] Vim 단축키

by 준환이형님_ 2010. 5. 6.

파일 작업시 명령어

Vim 명령어

결과

:e 파일명

새로운 파일을 연다. 커맨드 프롬프트처럼 Tab 키를 통해 파일이름의 자동 완성 기능을 사용할 수 있다.

:w 파일명

파일을 저장한다. 만약 파일 이름을 지정하지 않는다면 그냥 원래 파일 이름으로 저장이 되고 파일 이름을 지정해 준다면 새로운 파일 이름으로 저장이 된다.

:q

Vim 을 종료한다. 파일을 저장하지 않았자면 종료되지 않는다.

:q!

파일의 저장에 상관없이 종료한다.

:wq

파일을 저장한 후 종료한다.

:x

위의 :wq 와 거의 같지만 여기서 파일이 저장된 이후 기록된 사항이 있으면 저장하지 않고 파일이 저장된 이후 기록된 사항이 있으면 저장하고 종료한다.

파일 편집 중 이동하기

아래의 Vim 명령어는 Visual 모드, 터미널 모드 모두에서 사용 가능합니다.

Vim 명령어

결과

j or 방향키 ↑

커서를 한 칸 위로 이동

k or 방향키↓

커서를 한 칸 아래로 이동

l or 방향키 →

커서를 한 칸 오른쪽으로 이동

h or 방향키 ←

커서를 한 칸 왼쪽으로 이동

e

단어의 끝으로 이동

E

단어의 끝으로 이동

b

단어의 첫 부분으로 이동

B

단어의 첫 부분으로 이동

0

문장의 첫 부분으로 이동

^

공백문자가 아닌 문장의 첫 부분으로 이동

$

문장의 끝으로 이동

H

화면의 첫 번째 라인으로

M

화면의 중간 라인으로 이동

L

화면의 마지막 라인으로 이동

:n

n 번째 라인으로 이동. 예를 들어 :10 이면 10 번째 줄로 이동한다.

텍스트의 삽입 몇 편집

Vim 명령어

결과

i

커서 앞에 쓴다.

I

커서가 가리키는 라인의 앞에 쓴다.

a

커서 뒤에 추가한다.

A

커서가 가리키는 라인의 맨 뒤에 추가한다.

o

커서가 가리키는 라인 아래에 새 라인을 추가한다.

O

커서가 가리키는 라인 위에 새 줄을 추가한다.

r

한 글자를 바꿔 쓴 후 다시 명령모드로 들어간다.

R

삽입모드에 들어가지만 글자를 덧쓰면서 이미 쓰여진 글자를 지운다.

ESC

삽입/수정 모드에서 빠져나온다.

텍스트 지우기

Vim 명령어

Action

x

커서가 가리키는 글자를 지운다.

X

커서 앞의 글자를 지운다.

dd or :d

현재 커서가 가리키는 라인의 글자를 지운다.

비주얼 모드 들어가기

Vim 명령어

결과

v

단어를 하이라이팅(Highlighting, 블록 설정) 한다. 텍스트를 하이라이팅 하기 위해서 보통의 이동키를 사용한다.

V

현재 커서가 가리키는 라인을 하이라이팅 한다.

The ESC key

비주얼 모드에서 빠져나와 명령모드로 들어간다.

블록 텍스트 편집하기

아래의 명령어는 비주얼 모드에서 텍스트를 블록 설정한 후 명령모드로 들어와 사용할 수 있다. 물론 명령모드에서도 사용할 수 있긴 하다.

Vim 명령어

결과

~

글자의 대소문자를 바꾼다. 예를 들어서 mOvL 은 MoVl 로 바뀐다. 비주얼 모드와 명령모드 둘 다 사용할 수 있으며 비주얼 모드에서 블록 처리한 뒤 명령모드로 들어와 ~ 를 누르면 그 블록 설정된 부분의 대소 관계가 바뀐다.

> (V)

한 칸 오른쪽으로 민다.

< (V)

한 칸 왼쪽으로 민다.

c (V)

블록 처리된 텍스트를 바꾼다.

y (V)

블록 처리된 텍스트를 복사(yank)한다.

d (V)

블록 처리된 텍스트를 잘라내기한다.

yy or :y or Y

커서가 가리키는 라인을 복사한다. 블록 처리할 필요는 없다.

dd or :d

커서가 가리키는 라인을 삭제한다. 블록 처리할 필요는 없다.

p

복사나 잘라내기 했던 텍스트를 붙여넣기(put) 한다.

P

커서 앞에 잘라내기 했던 텍스트를 붙여 넣는다.

실행 취소 및 다시 실행

Vim 명령어

결과

u

실행 취소한다.

U

커서가 가리키고 있던 라인에서 했던 모든 실행들을 취소한다.

Ctrl + r

다시 실행한다.

검색

Vim 명령어

결과

/pattern

pattern 이란 단어를 검색한다.

n

다음 글자를 찾지만 아래방향으로 찾는다.

N

다음 글자를 찾지만 윗 방향으로 찾는다.

치환  (바꾸기)

Vim 명령어

결과

:rs/foo/bar/a

foo 를 bar 로 치환한다. r 은 치환하는 범위를 지정하고 a 는 인자를 지정한다. 아래에 r 과 a 의 종류에 대해 설명되어 있다.

범위 (r) 의 종류에는

아무것도 쓰지 않을 때

범위를 주지 않을 경우 현재 라인에서 치환한다.

숫자를 쓸 때

치환할 라인의 숫자를 쓴다.

%

전체 파일의 모든 라인에 대해 치환한다.

인자 (a)의 종류에는

g

한 라인의 모든 경우를 치환한다. 이 인자를 주지 않을 경우 처음 발견되는 것만을 치환한다.(이 말은 g 인자를 주지 않고 Hello Hi Hello 에서 Hello bye 로 치환한다면 bye Hi bye  가 아닌 bye Hi Hello 가 된다)

i

검색된 문자들의 대소문자를 무시하고 치환한다. (즉, hello 를 hi 로 치환시 Hello, hEllo, HELLO 등과 같은 것들도 치환된다. )

I

위 경우를 무시하지 않는다. ( 위 경우서 hello 만 치환된다 )

c

모든 치환에 대해 확인한다. 만약 치환할 것이라면 y 를, 치환하지 않을 것이라면 n 을, 이하 모든 부분을 치환할 것이라면 a 를, 치환을 종료하겠다면 q 를 누르면 된다.

예를 들자면…….

:452s/foo/bar/

 452 번째 라인의 첫 번째 foo 를 bar 로 치환한다.

:s/foo/bar/g

현재 라인에 나타나는 모든 foo 를 bar 로 치환한다.

:%s/foo/bar/g

전체 파일의 모든 foo 를 bar 로 치환한다.

:%s/foo/bar/gi

위와 같지만 Foo, FOO, FOo, foO 와 같은 것들도 모두 치환된다.

:%s/foo/bar/gc

위위와 같지만 각 치환에 대해 모두 검사를 수행한다.

:%s/foo/bar/c

파일의 모든 라인에 대해 각 라인의 첫 번째 foo 만 bar 로 치환하며 각 치환에 대해 검사를 한다.