저장 및 종료

명령어

설명

: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

커서 위치의 한 글자를 지우고 입력

cc

커서 위치의 한 행을 지우고 입력

 

삭제

x, dl

커서 위치의 글자 삭제

X, dh

커서 바로 앞의 글자 삭제

dw

한 단어를 삭제

d0

커서 위치부터 행의 처음까지 삭제

D, d$

커서 위치부터 행의 끝까지 삭제

dd

커서가 있는 행을 삭제

dj

커서가 있는 행과 그 다음 행을 삭제

dk

커서가 있는 행과 그 앞 행을 삭제

 

이동

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]

n행으로 이동

 

복사 & 붙이기

yy

커서가 위치한 한 행 복사

p

붙여넣기

[N]yy

커서가 위치한 이후로 N행 복사

[N]p

N번만큼 붙여넣기 반복

 

블록 지정 관련

v

블록 지정

Ctrl + v

비쥬얼 블록 지정

~

대소문자 전환

d

삭제

y

복사

c

치환

>

행 앞에 탭 삽입

<

행 앞에 탭 제거

:

선택된 영역에 대하여 ex 명령

J

행을 합침

U

대문자로 만듦

u

소문자로 만듦

 

문자열 탐색 및 치환

/[문자열]

문자열을 탐색

: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/old/new/g

pattern이 있는 모든 행의 old를 new로 교체

:g/pattern/s/new/g

:%s/old/new/g와 동일

 

파일 버퍼 관련 명령 요약

:buffers

버퍼의 내용을 나열

:files 또는 :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으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동

 

ctags 관령 명령

:ta [tag] or Ctrl + ]

[tag]가 정의된 위치를 나열하고 선택한 위치로 점프, 현재 위치는 stack에 push된다.

:ts [tag] or :tj [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로 점프

 

 레지스터 활용

vim a부터 z까지 26개의 네임 레지스터를 지원하는데 이를 반복되는 문자열을 저장해서 사용하면 편리하다.
"a[
저장할문장]    -> a 레지스터에 저장                 ex) "a3yy
"ap                 -> a
레지스터에 저장된 내용을 붙여넣기

 

 매크로 사용

네임 레지스터에 키 입력을 저장해서 사용하는 방법

q[네임 레지스터명] 입력한 뒤 저장할 키들을 순차적으로 누른 후 q를 누르면 저장된다.
@[
등록된 네임 레지스터명]을 누르면 저장된 키들을 사용할 수 있다.


 .vimrc 설정 변경 후 재시작 안하고 적용하는 법
:so .vimrc

+ Recent posts