vi editor

vi editor

 

1. vi editor란?

vi는 대부분의 유닉스 및 리눅스 환경의 기본 에디터로 명령 모드(command mode), 입력 모드(input mode), 실행 모드(execution mode) 3가지 모드로 구분되어 사용된다.

 

명령 모드(command mode)

- 한 문자 또는 두 문자로 구성된 vi 전용 명령어를 사용하는 모드로서 "커서 이동 / 문자 삭제 / 문자열 교체 / 문자열 검색" 등을 할 수 있는 모드를 말한다. vi를 처음 실행하면 시작하는 모드, vi에서는 대문자와 소문자를 구분해서 사용해야 한다.

 

입력모드(input mode)

- vi 편집화면에서 문자를 입력할 수 있는 상태를 의미하며 명령 모드에서 입력 모드로 전환하려면 i, a, o, I, A, O, R 등으로 명령을 내리면 입력 모드로 전환된다. 입력 모드로 전환되면 화면 화단에 " -- INSERT -- "라는 문구가 표시된다. 이 상태에서 다시 <ESC>를 누르게 되면 다시 명령 모드로 전환된다.

 

실행 모드(execution mode)

- vi의 특별한 명령어를 실행하는 실행 모드를 의미하며 명령 모드에서 콜론(:)을 누르면 vi 화면 하단 좌측에 ":"가 나타나며 이 상태에서 vi의 특별한 명령어를 사용할 수 있다.

 

 

2. vi 기초 명령어

 

1) 이동 명령

 

 h

 왼쪽으로 한 글자 이동

 l

 오른쪽으로 한 글자 이동

 k

 위쪽으로 한 줄 이동

 j

 아래쪽으로 한 줄 이동

 

단어 단위로 이동

 W

 다음 단어의 처음으로 이동

 B

 현재 단어의 처음으로 이동

 E

 다음 단어의 끝으로 이동

 

행, 문장 및 단락의 처음과 끝으로 이동

 0 또는 ^

 현재 행의 맨 앞으로 이동

 $

 현재 행의 맨 끝으로 이동

 +

 다음 행의 처음으로 이동

 -

 이전 행의 처음으로 이동

 (

 문장의 시작으로 이동

 )

 문장의 끝으로 이동

 {

 단락의 시작으로 이동

 }

 단락의 끝으로 이동

 

화면 내에서 행 단위로 이동

 H

 현재 화면의 맨 위로 이동

 M

 현재 화면의 가운데 행으로 이동

 L

 현재 화면의 맨 아래로 이동

 

한 화면씩 스크롤

 Ctrl + F

 한 화면 다음으로 이동

 n + Ctrl +F

 n 화면 다음으로 이동

 Ctrl + B

 한 화면 이전으로 이동

 n + Ctrl + B

 n화면 이전으로 이동

 Ctrl + D

 반 화면 다음으로 이동

 Ctrl + U

 반 화면 이전으로 이동

 n + Ctrl +D

 n 행 다음으로 이동

 n + Ctrl + U

 n 행 이전으로 이동

 

 

2) 입력하기

 

 현재 위치부터 입력

 I

 현재 행 맨 처음부터 입력

a

 현재 위치 다음부터 입력

 A

 현재 행의 끝부터 입력

o

 현재 행 다음 행에 입력

 O

 현재 행과 앞 행 사이에 입력 

 

 

3) 저장 및 종료

 

 :w 

 불러온 파일명으로 데이터 저장

 :w [파일명]

 지정 파일명으로 데이터를 저장

 :w >> [파일명]

 지정 파일명으로 데이터를 추가하여 저장

 :w!

 강제 저장

 :q

 종료

 :q!

 저장 없이 강제 종료

 :wq

 파일 저장 후 종료. 파일명 지정가능.

 :wq!

 강제로 파일 저장 후 종료. 파일명 지정가능.

 ZZ

 파일을 저장하고 vi종료

 :x

 파일에 변경이 있었다면 파일을 저장하고 vi를 종료

 

 

4) 삭제, 수정 및 복사

 

x

 현재 위치에서 한 글자 삭제

X

 현재 위치에서 앞 글자 삭제

dd

 현재 행 지우기

D

 현재 위치에서 행의 끝까지 지우기

dw

 단어 삭제

cw

 단어 삭제 후 입력

d$

 커서가 있는 곳부터 행의 끝까지 지우기

dG

 커서가 있는 곳부터 파일 끝까지 지우기

P

 마지막으로 지워진 내용은 커서의 뒤/아래에 삽입

p

 마지막으로 지워진 내용을 커서의 앞/뒤에 삽입

xp

 두 문자를 바꿈

deep

 두 단어를 바꿈

ddp

 두 줄을 바꿈

YY

 현재 행을 복사하기

u

 바로 전에 수행한 명령 취소하기

U

 바로 전에 수행한 행의 모든 명령 취소하기

r

 다른 파일의 내용을 읽어 들여 붙이기

 

 

 

5) 패턴 찾기

 

 /문자열

 아래 방향으로 문자열 검색

 /

 이전 패턴에 대해 아래 방향으로 검색을 반복

 ?문자열

 위 방향으로 문자열 검색

 ?

 이전 패턴에 대해 위 방향으로 검색을 반복

 n

 / 또는? 명령에 대해 같은 방향으로 반복 검색

 N

 / 또는 ? 명령에 대해 반대 방향으로 반복 검색

 

 

6) 기타 명령

 

화면상태 제어

^L

 화면을 다시 디스플레이

 :set nu

 :set number

 편집 중인 문서의 행 번호를 보여줌

 :set nonu

 :set nonumber

 편집 중인 문서의 행 번호를 보여주지 않음

 

약자의 사용

 :ab short long

 short를 long에 대한 약어로 변경 

 :ab

 약어 short를 표시 현재 약어 목록을 표시

 :una short

 편집 중인 문서의 줄 번호를 보여주지 않음

 

화면 줄 길이 조정

 r <Return>

 문자를 뉴 라인으로 변경 

 J

 줄의 결합

 :set wm=n

 오른쪽으로 n 문자 위치에서 자동적으로 줄 나눔

 

문자열 치환

 :g/search-string/s//replace-string/g

 앞부분의 문자열을 찾아서 뒷부분의 문자열로 대체

 :s/str/rep/

 현재 행의 str을 rep로 대체

 :1,.s/str/rep/

 1부터 현재 행의 str을 rep로 대체

 :%s/str/rep/g

 파일 전체 str을 rep로 전부 대체

 :.$/aaa/bbb/

 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체

 

 

 

3. vi editor 단축키

 

 

vi 단축키 모음 이미지 출처: KLDP

 


to Top