강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급 : vi 기초 명령

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2: vi 기초 명령

 

 

여기서는 vi를 이용해서 문서를 작성하고 편집하는 방법과 문서 입력, 저장, 수정 등의 방법에 대해 알아보도록 한다.

 

 

 

 

각각의 명령들은 명령모드에서 이루어지며, 명령을 내린 후의 상태에 대해서 주의 깊게 살펴본다면 vi에서는 문서 작성이 어떻게 이루어지는 지 알 수 있을 것이다.

 

 

 

 

 

1) 이동 명령

vi에서 이동 명령은 앞에서 배운 명령모드 상태에서 이루어진다.

 

 

 

 

만약 현재 모드가 어떤지 알 수 없다면 <Esc> 키를 몇 번 눌러서 초기 모드인 명령모드로 리셋(reset) 시킬 수 있다.

 

 

 

 

이동키를 알아보도록 하자.

 

우선 기본 이동 명령어는 다음과 같다.

 

 

 

 

마치 방향키를 사용하는 것처럼 익숙해지도록 해야 한다.

 

 

 

 

vim 프로그램에서는 방향키, <Backspace>, <Space bar>, <Enter> 등을 사용할 수도 있지만, vi를 사용할 때 항상 이것들을 사용할 수 있는 것은 아니므로 다음의 명령들에 익숙해져야 한다(만약 시험 문제에 다음 명령이 아니라 위와 같은 방향키 등만 기술되는 경우에는 이것을 선택할 수 있을 것이다).


   

 

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 행 이전으로 이동

 

행 번호를 알 경우에는 원하는 행 번호를 넣어 직접 이동할 수 있다.

 

 

 

 

행 번호를 직접 넣은 후 대문자 G를 입력하면 이동하게 된다.


 

[행번호]G

원하는 행으로 직접 이동




2) 입력하기



기본 모드인 명령 모드에서 입력 모드로 변경하기 위해서는 여러 가지 키가 있으나 그 중에 일반적으로 "i"(Insert)를 입력하는 방법이 있다.

 

 

 

 

소문자인 "i"를 입력하면 커서가 깜빡이고 있는 그 부분부터 문자를 받아들이기 시작한다.

 

 

 

 

그리고 다시 <Esc>키를 누르면 명령모드로 전환된다.

 

다음은 “i”를 누른 후 볼 수 있는 화면이다.

 

 

 

 

화면 아랫부분에 “-- 끼워넣기 --” 표시(영문의 경우 “INSERT”)를 볼 수 있다.

 

 

 

 

아래 오른쪽 그림은 편집을 시작 한 모습이다.

 

73ec353e323d465263881ff46309469e_1678773991_0393.png  73ec353e323d465263881ff46309469e_1678774005_1393.png 

 

위와 비슷한 명령으로 다음과 같은 것들이 있다.

 

i

현재 위치부터 입력

I

현재 행 맨 처음부터 입력

a

현재 위치 다음부터 입력하기

A

현재 행의 끝부터 입력하기

o

현재 행 다음 행에 입력하기

O

현재 행과 앞 행 사이에 입력하기




2) 저장 및 종료



내용을 모두 입력했다면 그것을 저장하고 빠져 나와야 할 것이다.

 

 

 

 

저장을 하기 위해서는 우선 입력모드에서 빠져 나와 명령모드로 변경해야 한다.

 

 

 

 

<Esc> 키를 눌러 명령모드로 바꾼 뒤에, “:w test.txt”와 같이 명령을 내리면 test.txt 이름으로 문서가 저장된다.

 

 

 

 

그리고 ":q"명령을 내리면 vi가 종료된다.

 

 

 

 

다음과 같이 “:wq test.txt”와 같이 혼합하여 사용한다.

 

 

 

 

만약 기존 문서를 연 상태라면 “:w”, “:q”, “:wq” 등의 명령을 내린다.

 

73ec353e323d465263881ff46309469e_1678774036_5207.png
 

 

명령 뒤에 ":q!"와 같이 "!"을 붙이는 경우도 있는데, 이것은 명령을 강제로 적용할 때 사용한다.

 

 

 

 

":q!" 명령은 종료를 강제로 하는 것을 의미한다.

 

 

 

 

저장하지 않고는 종료가 불가능하기 때문에 저장하지 않고 그냥 종료를 원할 때 사용한다.

 

 

 

 

그리고 쓰기 권한이 없으나 자신 소유의 파일일 경우에도 "w!" 와 같이 강제 명령을 내려서 사용할 수 있다.

 

 

 

 

 

 

저장 및 종료에 관련된 명령을 나열하면 다음과 같다.

 

:w

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

:w [파일명]

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

:w >> [파일명]

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

:w!

강제 저장

:q

종료

:q!

저장 없이 강제 종료

:wq

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

:wq!

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

ZZ

파일을 저장하고 vi 종료

:x

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






3) 삭제, 수정 및 복사




문서를 컴퓨터로 작성하는 이유 중의 하나가 수정이 용이하기 때문일 것이다.

 

 

 

 

그만큼 수정을 위해 알아두어야 할 것들도 많고, 깊이 알수록 편하게 문서 작업을 할 수 있는 것이다.

 

한 글자 삭제하기명령모드에서 지우고자 하는 글자에 커서를 이동한 뒤 “x"를 누르면 커서 위치부터 뒷 글자가 한자씩 지워지며 당겨지게 된다.

 

 

 

 

이처럼 "x" 명령은 글자를 한 글자씩 지우는 역할을 하게 된다.

 

한 단어 삭제하기명령모드에서 “dw” 명령을 내리면 한 단어가 삭제된다.

 

 

 

 

그리고 "cw" 명령을 내리면 한 단어를 삭제하고 다른 내용을 삽입할 수 있도록 한다.

 

 

 

 

앞에서 알아본 “x" 명령으로 계속 지운 후 "i"를 이용해서 다시 써야 하는 불편한 경우에 아주 유용하다.

 

줄 단위로 삭제하기명령모드에서 지우고자 하는 행으로 이동한 뒤 "dd" 명령을 입력하면 현재 줄이 삭제되게 된다.

 

 

 

 

그럼 현재 커서가 위치한 행에서 커서 위치 뒷부분의 글들을 모두 지우고 싶을 때는 행의 끝을 가리키는 정규 표현식인 “$”를 함께 사용하면 된다.

 

 

 

 

 

 

실행취소(Undo)Undo 기능은 지금까지 실행한 것들을 역순으로 돌려놓는 것이다.

 

 

 

 

명령모드에서 “u”를 실행하여, 앞에서 실행했던 “d$" 명령을 취소해 보도록 하자.

 

복사 및 붙이기우선 복사를 원하는 행으로 이동한다.

 

 

 

 

커서가 그 행의 어떤 위치에 있든 상관은 없다.

 

 

 

 

"yy"라는 명령은 한 줄을 버퍼에 넣는 명령으로 복사와 비슷하다.

 

 

 

 

명령모드에서 "yy"를 입력하도록 하자. 아무 변화는 없겠지만, 버퍼에 현재 행이 복사된다.

 

 

 

 

이제 붙이기를 할 행의 한 줄 전에서 “p"를 입력하면 아래 한 줄이 밀리면서 붙여진다.

 

 

 

 

대문자 “P"를 입력하면, 아랫줄이 아닌 윗줄로 붙이기가 된다.

 

두 파일 합하기두 개의 파일을 합해야 할 경우 “:r" 명령을 사용할 수 있다.

 

 

 

 

다음 화면에서 명령 전에 커서가 위치했던 곳 뒷부분에 cut.txt에 저장되었던 세 줄이 붙여졌다.

 

 

 

 

만약 현재 파일의 뒷부분에 내용을 붙이려면 커서를 마지막에 두고 r 명령을 내리면 된다.

 

 

 

 

 

 

73ec353e323d465263881ff46309469e_1678774076_923.png 73ec353e323d465263881ff46309469e_1678774102_6586.png 



 

다음은 vi에서의 삭제, 수정 및 복사에 관한 명령들이다.

 

x

현재 위치에서 한글자 삭제하기

X

현재 위치에서 앞글자 삭제하기

dd

현재 행 지우기

D

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

dw

단어 삭제하기

cw

단어 삭제 후 입력

d$

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

dG

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

p

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

P

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

xp

두 문자를 바꿈

deep

두 단어를 바꿈

ddp

두 줄을 바꿈

yy

현재 행을 복사하기

u

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

U

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

r

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

4) 패턴 찾기

다음 화면을 보고 Linux를 찾아보자. 화면에서 보는 바와 같이 “/”를 통해 현재 커서가 위치한 곳부터 아래로 찾아 내려갈 수 있다.

 

 

 

 

계속해서 아래로 찾으려면 “n"을 누르면 된다.

 

 

 

 

대문자인 ”N"을 누르면 아래에서 위로 찾아가게 된다.

 

73ec353e323d465263881ff46309469e_1678774122_5246.png 73ec353e323d465263881ff46309469e_1678774140_6024.png 

 

“/”가 하위로 찾는 명령이었다면, 상위로 찾는 “?” 명령이 있다.

 

 

 

 

“?” 명령은 “/”의 용법이 같으면서 정확히 반대로 찾기를 한다.

 

 

 

 

직접 실습해 보자.

 

/문자열

아래 방향으로 문자열 검색

/

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

?문자열

위 방향으로 문자열 검색

?

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

n

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

N

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

5) 외부 명령어 실행

vi에서 외부 명령 실행할 수도 있다.

 

 

 

 

먼저 콜론(:)을 누른 후에 느낌표(!)를 입력하고 이것에 붙여서 외부 쉘 명령을 입력한 후에 <Enter>를 누른다.

 

 

 

 

그러면 외부 명령어가 실행된다.

 

 

 

 

실행된 후에 다시 <Enter>를 누르면 vi 편집 화면으로 돌아간다.

 

73ec353e323d465263881ff46309469e_1678774181_6973.png 73ec353e323d465263881ff46309469e_1678774198_5726.png
  



6) 기타 명령



화면상태 제어



^L

화면을 다시 디스플레이

:set nu

:set number

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

:set nonu

:set nonumber

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

 

약자의 사용



:ab short long

shortlong에 대한 약어로 변경

:ab

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

:una short

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

 

화면 줄 길이 조정



r <Return>

문자를 뉴 라인으로 변경

J

줄의 결합

:set wm=n

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

 

문자열 치환



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

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

:s/str/rep/

현재 행의 strrep로 대체

:1,.s/str/rep/

1부터 현재 행의 strrep로 대체

:%s/str/rep/g

파일 전체 strrep로 전부 대체

:.$/aaa/bbb/

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

 

 

 

 

 

파일 포맷 바꾸기

vi에서 유닉스, 도스, 맥 등에 대한 파일 포맷을 각각 지정하여 편집할 수 있다.

 

 

 

 

새로운 파일을 만들 때 ex 모드에서 다음과 같이 지정하면 된다.

 

 

 

 

저장한 후에 다시 파일을 열어 보면 아래에 [dos] 라는 표시가 보일 것이다.

 

:set fileformat=[unix|dos|mac]

 

)

# vi test.txt (문서 작성 중이라면 :e test.txt)

:set fileformat=dos <Enter> (ex 모드에서)

:w (편집 후 저장)

 

 

 

 

 

 

 

 

 

도움말 보기

vi 상에서도 도움말 보기 기능이 있다.

 

 

 

 

이것은 ex 모드에서 help 명령을 통해서 가능하다.

 

 

 

 

이것을 통해 특정 부류의 명령어들이나 옵션에 대한 정보를 얻을 수 있다.

 

Normal mode commands (nothing) :help x

Visual mode commands v_ :help v_u

Insert mode commands I_ :help i_<Esc>

Command-line commands : :help :quit

Command-line editing c_ :help c_<Del>

Vim command arguments - :help -r

options ' :help 'textwidth'

 

help에 대한 찾기 : “:help word"라고 입력하면 해당 단어와 매칭이 되는 help를 볼 수 있다.

 

 

 

 

하나의 단어와 매칭이 되는 여러 가지 help가 있을 수 있는데, 이들에 대해서는 <CTRL>-<D> 로 옮겨 갈 수 있다.

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  90 명