본문 바로가기
컴퓨터과학[3-2]/U.N.I.X

UNIX - [제6강] vi 편집기

by boolean 2016. 7. 19.
728x90

UNIX - [제6강] vi 편집기

● vi 편집기 사용 방법 ● vi 편집기 명령어 ● vi 편집기 환경 설정

UNIX 용어정리

  • vi 편집기
    유닉스와 리눅스에서 항상 사용할 수 있는 대표적 텍스트 편집기이다. 그래픽 인터페이스는 제공되지 않지만 익숙해진다면 상당히 빠르고 편리하게 텍스트 작성을 할 수 있다.
  • vi 와 모드
    vi 편집기를 시작하면 먼저 명령 모드로 들어가며 여기서 문자 명령(a, i, o 따위)을 이용하여 입력 모드로 들어갈 수 있으며 또한 명령 모드에서 삭제, 치환, 복사와 붙여넣기 등의 편집 명령을 실행할 수 있다. 명령 모드에서 :를 치면 라인 모드로 들어가며 저장, 종료, 환경 설정 등의 명령을 수행할 수 있다.
  • vi 와 환경설정
    vi 편집기를 시작하면 먼저 명령 모드로 들어가며 여기서 문자 명령(a, i, o 따위)을 이용하여 입력 모드로 들어갈 수 있으며 또한 명령 모드에서 삭제, 치환, 복사와 붙여넣기 등의 편집 명령을 실행할 수 있다. 명령 모드에서 :를 치면 라인 모드로 들어가며 저장, 종료, 환경 설정 등의 명령을 수행할 수 있다.
  • 쉘의 환경 설정 파일
    /bin/bash를 이용하여, 로그인 쉘(로그인할 때 사용하는 쉘)을 시작하면 .bash_profile이 자동 실행된다. 로그인 쉘이 아니라면 .bashrc가 자동 실행된다.

요점정리

  1. vi 편집기의 세 가지 모드에 대하여 설명하시오.
    • 명령모드 (command mode)
      라인 모드 또는 입력 모드에서 Esc를 눌러서 전환
      커서 이동, 복사, 삭제, 붙여 넣기, 치환, 검색 등 기능 수행
    • 라인모드 (line mode)
      명령 모드에서 : 를 눌러서 전환
      명령 프롬프트에서 저장, 검색 등 명령 수행
    • 입력모드(insert mode)
      명령 모드에서 a, A, i, I, o, O 키를 눌러서 전환
      글자를 입력하는 모드
  2. vi 편집기의 파일 저장 및 끝내기 방법을 기술하시오.
    • 라인 모드에서 저장
      w : 현재 작업 중인 파일에 저장
      w 파일명 : 다른 이름으로 저장
      w! 파일명 : 다른 이름으로 저장 (기존 내용을 덮어씀)
    • 명령 모드에서 종료
      ZZ : 변경 내용을 저장하고 종료
    • 라인 모드에서 종료
      q : 그대로 종료(이전 저장 후 변경된 내용이 없는 경우)
      q! : 저장하지 않고 종료
      wq [파일명] 또는 x [파일명] : 변경 내용을 저장하고 종료
  3. vi 편집기의 복사, 잘라내기, 붙여넣기 명령 수행 과정에 대하여 자세히 설명하시오.
    • 복사
      y이동명령 : 현재 위치부터 이동 위치까지 복사
      yy : 커서 위치의 한 줄 복사
    • 잘라내기
      x : 커서가 위치한 문자 삭제
      X : 커서 앞의 문자 삭제
      D : 커서부터 줄의 끝까지 삭제
      dd : 현재 줄을 삭제
      d이동명령 : 현재 위치부터 이동 위치까지 잘라내기
    • 붙여 넣기
      p : 잘라내기 하거나 복사된 부분을 커서 다음(줄)에 붙여넣기
      P : 잘라내기 하거나 복사된 부분을 커서 앞(줄)에 붙여넣기
    • 이동명령
      화살표 키 또는 hjkl : 각 방향으로 한 칸 이동
      e : 다음 단어 끝 글자로 이동
      b : 이전 단어의 첫 글자로 이동
      w : 다음 단어의 첫 글자로 이동
      - : 이전 줄의 처음으로 이동
      + 또는 Enter : 다음 줄의 처음으로 이동
      0, $: 현재 줄의 처음, 현재 줄의 끝으로 이동
      ^ : 현재 줄의 공백이 아닌 첫 글자로 이동
      (, ) : 문장의 시작, 문장의 끝으로 이동
      {, } : 문단의 시작, 문단의 끝으로 이동
      G : 문서의 마지막으로 이동
      nG : 문서의 n 번째 줄로 이동
      '' : 이전의 커서 위치로 이동
      M : 화면의 중간 줄에 커서 이동
  4. vi 편집기 옵션을 설정하는 방법을 설명하시오.
    • vi 편집기 내에서 설정 라인모드에서 set 명령을 사용
      예를 들어
      : set number autoindent
    • 홈 디렉터리의 .exrc 파일에서 set 명령어를 설정
      예를 들어
      set number autoindent
    • shell에서 명령을 수행하거나 홈 디렉터리의 .bashrc에 추가
      예를 들어
      EXINIT='set number autoindent'
      export EXINIT


연습문제

  • 연습문제1
    vi 편집기의 명령 모드에서 커서가 위치한 줄의 끝으로 커서를 이동하는 명령은?
    답을 체크하세요
    정답 :
    해설 : $가 줄 끝으로 이동하는 명령이다. ^는 줄의 (공백이 아닌) 처음으로 이동, +는 다음 줄로 이동, -는 이전 줄로 이동하는 명령이다.
  • 연습문제2
    vi 편집기에서 문자열 패턴을 검색하는 명령은?
    답을 체크하세요
    정답 :
    해설 : /pattern이 문자열 패턴을 검색하는 명령이다.
  • 연습문제3
    vi 편집기에서 이전 명령을 반복하는 명령은?
    답을 체크하세요
    정답 :
    해설 : 이전 명령을 반복하는 것은 ‘.’이다.
  • 연습문제4
    vi 편집기의 명령 모드에서 커서가 위치한 단어를 치환하는 명령은?
    답을 체크하세요
    정답 :
    해설 : dd는 한 줄을 삭제하는 것이며, d)는 문장 끝까지 삭제하는 것이고, yy는 한 줄을 복사하는 명령이다. 명령 모드에서 cw를 입력하면 커서 위치부터 단어의 끝까지 삭제되며 입력 모드로 전환된다.
  • 연습문제5
    vi 편집기의 명령 모드에서 입력 모드로 전환하기 위한 명령이 아닌 것은?
    답을 체크하세요
    정답 :
    해설 : a는 커서 다음 위치부터 입력, i는 커서 위치부터 입력, o는 커서 다음 줄에 입력하기 위한 명령이다.

pratical centos 리눅스 활용 교재 연습문제 풀이

6강. vi 편집기

l vi 편집기

각종 문서를 편집할 수 있는 텍스트 기반의 편집기

l vi 편집기의 모드

Ÿ 명령모드 (command mode)

-라인 모드에서 Return 또는 입력 모드에서 Esc를 눌러서 전환

-한 글자 또는 두 글자 명령을 사용하여 커서를 이동

-글자/단어/줄 삭제 및 교체, 문자열 검색 등 기능 수행

Ÿ 라인모드 (line mode)

-명령 모드에서 : 를 눌러서 전환

-명령 프롬프트에서 저장, 편집, 검색 기능 등 다양한 명령 수행

Ÿ 입력모드(insert mode) : 명령 모드에서 다음 키를 눌러서 전환한 후 글자를 입력

∘ a : 커서 위치의 다음부터 입력 시작

∘ A : 커서 위치 줄의 끝에서 입력 시작

∘ i : 커서 위치에서부터 입력 시작

∘ I : 커서 위치 줄의 처음에서 입력 시작

∘ o : 커서 위치 줄의 다음 줄에서 입력 시작

∘ O : 커서 위치 줄의 위에서 입력 시작

l vi 편집기의 실행과 종료

Ÿ vi 편집기의 실행

∘ vi [파일명]

Ÿ vi 편집기의 종료

-명령 모드에서 키보드 명령을 입력

∘ ZZ : 변경 내용을 저장하고 종료

-라인 모드에서 종료하는 명령

∘ :q 그대로 종료(변경 내용이 저장되어 있는 경우)

∘ :q! 저장하지 않고 종료

∘ :wq [파일명] 또는 x [파일명] : 변경 내용을 저장하고 종료

l 파일 불러오기와 저장하기

Ÿ 파일 읽어오기 : 라인 모드에서 파일을 읽어오는 명령

∘ r [파일명] : 파일의 내용을 읽어서 커서 위치의 다음 줄에 삽입

Ÿ 파일 저장하기 : 라인 모드에서 파일을 저장하는 명령

∘ w : 문서의 내용을 현재 파일에 저장

∘ w 파일명 : 문서의 내용을 지정한 파일에 저장(기존에 파일이 없는 경우)

∘ w! 파일명 : 문서의 내용을 지정한 파일을 지우고 저장

∘ begin,endw 파일명 : begin 행과 end 행 사이의 내용을 지정한 파일에 저장

l vi 편집기 커서 이동 명령

Ÿ 명령 모드에서 기본적인 커서의 이동

∘ h, j, k, l : 왼쪽, 아래, 위, 오른쪽으로 한 칸 이동

Ÿ 단어 단위 커서 이동

∘ e : 다음 단어의 끝 글자로 이동

∘ b, w: 이전 단어의 첫 글자, 다음 단어의 첫 글자로 이동

Ÿ 줄 단위 커서 이동 방법

∘ - : 이전 줄의 처음으로 이동

∘ + 또는 Enter : 다음 줄의 처음으로 이동

∘ 0, $: 현재 줄의 처음, 현재 줄의 끝으로 이동

∘ ^ : 현재 줄의 공백이 아닌 첫 글자로 이동

Ÿ 문단 단위 커서 이동 방법

∘ (, ) : 이전 문장, 다음 문장의 첫 칸으로 이동

∘ {, } : 이전 문단, 다음 문단의 첫 칸으로 이동

∘ G : 문서의 마지막으로 이동

∘ nG : 문서의 n 번째 줄로 이동

∘ ' ' : 이전의 커서 위치로 이동 (작은 따옴표 두 번)

∘ H, M, L : 화면의 처음, 중간, 마지막 줄에 커서 이동

∘ . : 마지막 명령 반복

∘ CTRL-F, CTRL-B : 스크린 단위 이동

∘ :num : 지정 라인으로 이동

l vi 편집기 삭제 명령

∘ x : 커서가 위치한 문자 삭제

∘ X : 커서 앞의 문자 삭제

∘ D : 커서부터 줄의 끝까지 삭제

∘ dd : 현재 줄을 삭제

∘ dmove : 커서부터 move 이동 위치까지 삭제

∘ dw : 커서가 위치한 단어 삭제(커서가 단어의 첫 번째 글자에 위치할 때)

∘ db : 커서 앞의 한 단어 삭제(커서가 단어의 첫 번째 글자에 위치할 때)

∘ dG : 커서가 위치한 줄부터 문서 마지막까지 삭제

l vi 편집기 치환 명령

Ÿ 문자 및 문자열 단위의 치환

∘ r : 커서가 위치한 한 문자를 치환

∘ R : 입력 모드 전환되며 줄의 끝까지 한 문자씩 덮어 씀

∘ s : 커서가 위치한 문자를 삭제하고 입력모드로 전환

∘ S : 커서가 위치한 줄을 삭제하고 입력모드로 전환

∘ u : 변경 내용 취소

Ÿ 단어 단위의 치환

∘ cw : 커서 위치의 단어를 삭제하고 치환

∘ cW : 공백으로 구분된 뒤 단어를 삭제하고 입력모드로 전환

∘ cB : 공백으로 구분된 앞 단어를 삭제하고 입력모드로 전환

l vi 편집기 텍스트 붙여 넣기 및 복사 명령

Ÿ 텍스트 붙여 넣기 명령

∘ p : 삭제되거나 복사된 부분을 커서 다음(줄)에 붙여넣기

∘ 예 : dd 명령(커서가 위치한 줄 삭제)을 실행한 후 커서를 이동하여 p 명령(커서위치 아

래에 삭제된 줄 삽입)

∘ P : 삭제되거나 복사된 부분을 커서 앞(줄)에 붙여넣기

∘ 예 : dw 명령(커서위치부터 단어 끝까지 삭제)을 실행한 후 커서를 이동하여 P 명령(커서

위치 앞에 삭제된 단어 삽입) 실행

Ÿ 텍스트 복사 명령

∘ ymove : 커서 위치부터 move 이동 위치까지 복사

∘ yy : 커서 위치의 한 줄 복사

l vi 편집기 검색 명령

Ÿ 텍스트 검색 명령

∘ /pattern : 문서에서 pattern 검색(순방향)

∘ 예 : 명령어모드에서 /Unix<Enter> 하면 문서에서 커서 위치에서 뒤쪽으로 가장 가까운

Unix 를 찾음

∘ Unix 뿐만 아니라 unix도 같이 검색하려면?

∘ n : 이전 검색 반복

∘ 예 : 명령어모드에서 n을 누르면 문서의 다음 Unix를 찾음

∘ N : 반대 방향으로 이전 검색 반복

∘ 예 : 명령어모드에서 N을 누르면 문서의 이전 Unix를 찾음

l vi 옵션 설정하기 - set 명령

Ÿ 라인모드에서 실행 (명령모드에서 : 키를 누름)

Ÿ vi 편집기 set 명령 주요 옵션

∘ autoindent : set ai / set noai (자동 들여쓰기 설정 / 해제)

∘ ignorecase : set ic / set noic (대소문자 미구분 검색 / 구분)

∘ number : set nu / set nonu (줄 번호 표시 / 표시 안 함)

∘ tapstop : set ts=number (<Tab>키에 number개의 공백만큼 이동)

Ÿ 사용 가능한 옵션과 현재 설정 목록 표시

∘ set all : 모든 옵션 설정을 표시

∘ set 옵션이름? : 해당 옵션의 설정 값을 표시

l vi 환경 설정 방법

Ÿ vi가 실행될 때마다 미리 설정한 set 명령이 자동으로 적용

Ÿ ~/.exrc 파일 또는 EXINIT 환경변수를 이용

Ÿ .exrc 파일(또는 .vimrc)

-홈 디렉터리에 .exrc 파일을 생성

-set number 등 필요한 옵션을 설정

Ÿ EXINIT(또는 VIMINIT) 환경변수

-쉘에서 다음 두 줄을 실행하거나 ~/.bashrc에 두 줄을 추가

-EXINIT='set number ic‘

export EXINIT

l vi 사용법 정리

Ÿ 주요 명령어

∘ u (명령 취소), . (명령 반복)

∘ 0 (줄의 처음으로 이동), $ (줄의 끝으로 이동)

∘ CTRL-F, CTRL-B(스크린 단위 이동)

Ÿ 모드 전환

-명령모드 : 라인모드 또는 입력모드에서 <Esc> 누름

-라인모드 : 명령모드에서 : 누름

-입력모드 : 명령모드에서 a(append), i(insert), o(open a line) 실행

l vi 편집기 사용 예 (1)

Ÿ 쉘에서 vi myfirst.txt 명령을 실행

∘ i 누름 : 입력모드로 전환

∘ 다음 두 줄을 입력

Linux can be installed on a wide variety of computer hardware.

It ranges from mobile phones, tablet computers, routers and video game consoles,

to desktop computers, mainframes and supercomputers.

∘ <Esc> 누름 : 명령모드로 전환

∘ / (누른 후) computer (입력하고 ) <Enter>누름

∘ computer를 찾음

l vi 편집기 사용 예 (2)

∘ yy 누름 : 커서 위치의 한 줄을 복사

∘ p 누름 : 복사된 줄을 커서 아래 줄에 붙여 넣기

∘ n 누름 : 이전 찾기 계속 (다음 computer를 찾음)

∘ cw (누른 후) Linux (입력하고) <Esc> 누름 (해당 단어가 Linux로 바뀌고 다시 명령모드

가 됨)

∘ : (누른 후) w mysecond.txt (입력하고) <Enter> 누름

∘ 다른 이름(mysecond.txt)으로 저장

∘ o 누름 : 커서 위치 아래 줄이 열리고 입력모드로 전환

∘ 적당한 내용을 입력 후 <Esc> 누름

l vi 편집기 사용 예 (3)

∘ dd 누름 : 커서 위치의 줄이 삭제됨

∘ p 누름 : 삭제된 줄을 커서 아래 줄에 붙여 넣기

∘ : (누른 후) q! (입력하고) <Enter> 누름

∘ 고친 내용을 저장하지 않고 끝냄

l 다음 문제의 정답을 고르시오.

11. vi 편집기를 이용하여 편집 중인 파일의 10줄을 삭제하는 명령으로 알맞은 것은?

① 10dw ② d10w

③ 10dd ④ d10d

12. vi 편집기의 명령과 그 기능이 바르게 짝지어지지 못한 것은?

① i : 입력 모드로 전환하기

② u : 커서 이동하기

③ d : 지우기

④ c : 바꾸기

13. vi에서 명령모드에서 입력모드로 전환하는 명령이 아닌 것은?

① o ② S

③ r ④ I

14. 다음 중 vi의 이동 명령으로 알맞은 것은?

① G - 문서의 마지막 행으로 간다.

② W - 윈도를 아래로 내린다.

③ ^F - 반 화면 아래로 간다.

④ \pattern - 문자열 pattern을 반대방향으로 검색해 이동

15. vi 편집기로 test 파일을 작성하던 중 비정상적으로 종료된 경우 이를 되살리기 위한 명

령으로 적절한 것은?

① vi test ② vi -r test

③ vi –s test ④ vi -t test

l 다음의 예문을 vi 편집기로 입력하고 ‘vi_exercise.dat’ 파일로 저장하고 나서 아래의 문제

에 따라 편집하여 보자(단, 왼쪽에 있는 숫자는 행 번호를 나타내는 것이므로 입력하지 않

는다.)

01 A few moments after his daughter announced her engagement,

02 the father questioned, “Does this fellow have any money?”

03 “Oh, you men are all alike,” the girl snappped.

04 “What do you mean?” her father wanted to know.

05 “Well,” said the daughter,

06 “Well,” said the daughter,

07 “that’s just what he wanted to know about you.”

16. 3번째 줄에 있는 snappped라는 단어를 snapped로 바꾸어 보자.

커서를 “snappped”로 이동 → cw 입력 → snapped → <ESC>

17. 5번째 줄 모두를 삭제하시오.

커서를 다섯 번째 줄로 이동 → dd 입력

18. 6번째 줄에 있는 문장 모두를 대문자로 변환하시오.

커서를 6번째 줄로 이동 → cc 입력 → 모두 대문자로 입력 → <ESC> (여기서 cc는 change

line을 의미) 또는

해당 라인의 각 소문자 위에서 ~를 입력 (~는 소문자를 대문자로, 대문자를 소문자롤 바꿈)

19. vi 편집기에서 라인 번호를 볼 수 있도록 환경 설정을 저장하시오.

<ESC> → :set nu 입력

댓글