vi 명령어 모음 사용법(vim 단축키 정리)

Vi 란 무엇일까?

리눅스나 유닉스를 처음 접하는 사람에게 vi는 매우 골치아픈 존재였을 것이다. 도스나 윈도우에서 문서 편집기를 써 본 사람에게는 vi는 매우 불편한 편집기로 생각 될 것이다.

vi 명령어

그러나 vi 편집기에 익숙해지면 이보다 좋은 문서 편집기는 없다는것을 느끼게 될 것이다.

vi라는 이름은 ‘VIsual display editor’를 의미 합니다. vi는 버클리의 어느 천재가 만들었다고 하는데, vi를 만들던 시절에는 ed와 같은 라인 에디터가 일반적이었다.

그 옛날 옛적 도스의 ‘edlin’이라는 라인 에디터를 써 본 사람이라면 라인 에디터가 얼마나 불편한지 알 것이다. 유닉스처럼 텍스트 에디터와 포매터가 분리된 환경에서는 텍스트 에디터의 비중이 크기 때문에 기능 면에서도 많은 요구가 있게 마련이다.

vi 명령어

때문에 텍스트 에디터가 워드 프로세서의 기능의 상당 부분을 가지게 되었다. 유닉스에 여러가지 종류가 있듯이 vi도 여러가지 클론이 만들어졌다.

요즘 대부분의 배포판에는 vim이라는 vi의 클론이 포함되어 있으며, vim은 완벽하게 한글을 지원하고 원래의 vi의 기능을 충실하게 갖고 있을 뿐만 아니라 여러가지 좀더 편리한 툴들을 제공한다.

vi 명령어 사용법(vim 포함)

글입력

vi는 기본적으로 명령 모드에 있으며, 이 상태에서 키보드에서 입력하는 문자 하나하나는 vi에 대한 명령어가 된다. 입력 모드로 들어가는 문자를 입력하면 비로소 그때부터 입력 모드가 되는 것이다.

vi 명령어

입력 모드에서 명령 모드로 복귀하려면 ”키를 누르면 된다. 입력 모드로 들어가는 명령은 다음과 같다.

입력모드 진입방법

a
커서 위치의 다음 칸부터부터 끼워넣기(append)

A
커서가 있는 줄의 끝에서부터 끼워넣기

i
커서 위치부터 끼워넣기(insert)

I
커서가 있는 줄의 맨 앞에서부터 끼워넣기

o
커서 바로 아래에 줄을 만들고 끼워넣기(open line)

O
커서 바로 위에 줄을 만들고 끼워넣기

커서이동

h
한칸 왼쪽으로 이동

l
한칸 오른쪽으로 이동

j
한줄 아래로 이동

k
한줄 위로 이동

w
다음 단어의 첫 글자로 이동

W
다음 단어의 첫 글자로 이동

b
이전 단어의 첫 글자로 이동

B
이전 단어의 첫 글자로 이동

e
단어의 마지막 글자로 이동

E
단어의 마지막 글자로 이동

^
그 줄의 첫 글자로 이동

$
그 줄의 마지막 글자로 이동

0
그 줄의 처음으로 이동


다음 줄의 첫 글자로 이동

+
다음 줄의 첫 글자로 이동


윗줄의 첫 글자로 이동

(
이전 문장의 첫 글자로 이동

)
다음 문장의 첫 글자로 이동

{
이전 문단으로 이동

}
다음 문단으로 이동

글 수정

r
커서 위치의 한 글자 교체

R
커서 위치부터?를 누를때까지 다른 글자로 교체

s, cl
커서 위치의 글자를 한개를 여러 글자로 교체

ch
커서 바로 앞의 글자를 한개를 여러 글자로 교체

cw
커서 위치의 한 단어를 교체

c0
커서 위치부터 줄의 처음까지 교체

C, c$
커서 위치부터 줄의 끝까지 교체

cc
커서가 있는 줄을 교체

cj
커서가 있는 줄과 그 다음 줄을 교체

ck
커서가 있는 줄과 그 앞줄을 교체

글 삭제

x, dl
커서 위치의 글자 삭제

X, dh
커서 바로 앞의 글자 삭제

dw
한 단어를 삭제

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

D, d$
커서 위치부터 줄의 끝까지 삭제

dd
커서가 있는 줄을 삭제

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

dk
커서가 있는 줄과 그 앞줄을 삭제

복사 & 붙이기

yw
커서 위치부터 단어의 끝까지 복사

y0
커서 위치부터 줄의 처음까지 복사

y$
커서 위치부터 줄의 끝까지 복사

yy
커서가 있는 줄을 복사

yj
커서가 있는 줄과 그 다음 줄을 복사

yk
커서가 있는 줄과 그 앞줄을 복사

p
커서의 다음 위치에 붙여넣기

P
커서가 있는 위치에 붙여넣기

기타 명령어

u
작업 취소(undo)

U
그 줄에 행해진 작업 모두 취소

Ctrl+r
작업 재실행(redo)

.
조금 전에 했던 명령을 반복

J
현재 줄과 아래 줄을 연결

~
대문자를 소문자로, 소문자를 대문자로 바꿈

%
괄호의 반대쪽 짝으로 이동

Ctrl+l
현재 화면을 지우고 다시 그림

Ctrl+g
파일에 관한 정보를 표시

화면 이동

H
커서를 화면의 맨 위로

z<CR>
현재 줄을 화면의 맨 위로

M
커서를 화면의 중앙으로

z.
현재 줄을 화면의 중앙으로

L
커서를 화면의 맨 아래로

z-
현재 줄을 화면의 맨 아래로

[n]H
커서를 위에서?[n]번째 줄로

[n]L
커서를 아래에서?[n]번째 줄로

Ctrl+u
반 화면 위로 스크롤

Ctrl+b
한 화면 위로 스크롤

Ctrl+d
반 화면 아래로 스크롤

Ctrl+f
한 화면 아래로 스크롤

gg, 1G
문서의 맨 처음 줄로

G
문서의 맨 마지막 줄로

[n]G
[n]번째 줄로 이동

패턴 검색 및 교체

/[pattern]
현재 위치에서부터 아래 방향으로 패턴 검색

?[pattern]
현재 위치에서부터 위쪽 방향으로 패턴 검색

n
검색하던 방향으로 계속 패턴 검색

N
검색하던 반대 방향으로 계속 패턴 검색

:s/old/new
현재 줄의 처음 old를 new로 교체

:s/old/new/g
현재 줄의 모든 old를 new로 교체

:1,20s/old/new/g
1부터 20번째 줄까지 모든 old를 new로 교체

:-2,+4s/old/new/g
커서 2줄 위부터 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과 동일

vi 설정방법

set autoindent ” 자동으로 들여쓰기를 한다.
set cindent ” C 프로그래밍을 할때 자동으로 들여쓰기를 한다.
set smartindent ” 좀더 똑똑한 들여쓰기를 위한 옵션이다.
set textwidth=79 ” 만약 79번째 글자를 넘어가면 \
set wrap ” 자동으로 를 삽입하여 다음 줄로 넘어간다.
set nowrapscan ” 검색할 때 문서의 끝에서 다시 처음으로 돌아가지 않는다.
set nobackup ” 백업 파일을 만들지 않는다.
set visualbell ” 키를 잘못눌렀을 때 삑 소리를 내는 대신 번쩍이게 한다.
set ruler ” 화면 우측 하단에 현재 커서의 위치(줄,칸)를 보여준다.
set tabstop=4 ” Tab을 눌렀을 때 8칸 대신 4칸 이동하도록 한다.
set shiftwidth=4 ” 자동 들여쓰기를 할때 4칸 들여쓰도록 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다