[유닉스] 편집기 (vi)


유닉스 편집기의 종류



편집기의 종류

  • 행 단위 편집기와 화면 단위 편집기로 구분
  • 행 단위 편집기 : 한 번에 한 행씩만 작성하거나 수정
  • 화면 단위 편집기 : 전체 내용을 화면 단위로 보면서 커서를 이동하며 작업


  • ed

    • 유닉스 초기의 표준 편집기
    • 사용이 불편해 지금은 거의 사용하지 않음
  • ex

    • ed의 발전된 버전
    • 행 단위 편집기로 시작하여 화면 단위 편집기로 발전
    • 현재는 vi에 내장되어 명령행 명령 모드를 제공
  • sed

    • 비대화식 행 단위 편집기
    • 조건에 맞는 행에 지정한 편집 명령을 실행, 결과를 화면에 출력
    • 크기가 큰 파일에 간단한 편집을 반복 수행할 때 많이 사용
  • emacs

    • 화면 단위 편집기
    • 종류가 다양, GNU 이맥스가 유명
    • 기본 설치가 되지 않아 별도로 설치해야 함
    • 가장 큰 장점 : 파일 편집하면서, 유닉스의 여러 기능들을 그냥 사용할 수 있음

      예) 편집 도중 이메일 주고받을 수 있고, 쉘 실행, 파일 복사, 삭제 등 작업 가능

  • vi

    • 유닉스에서 기본으로 제공되는 화면 편집기
    • ex 편집기의 명령을 그대로 사용 가능

모드형과 비모드형 편집기

  • 윈도우 시스템에서 사용하는 한글 워드는 비모드형 편집기
  • vi는 모드형 편집기
  • 비모드형에서 a는 항상 a라는 글자를 의미
  • 모드형에서 a는 글자 자체가 되기도 하고 명령을 나타내는 키가 되기도 함

vi 동작 모드



vi 동작 구조

  • vi에서 편집한 파일은 저장할 파일을 지정하기 전에 하드디스크에 저장되지 않고, 버퍼에만 존재
  • 사용자가 파일 저장 명령을 주어야 하드디스크에 저장됨


vi 동작 모드

  • 입력 모드 : 실제로 내용을 입력할 수 있는 모드
  • 명령 모드, 마지막 행 모드(명령 모드에 포함시키기도 함) : 글자와 행의 삭제, 검색, 저장 등의 기능 수행
  • vi를 시작하면 바로 명령 모드


  • vi 명령의 분류

    • 원하는 위치로 이동하는 명령
    • 입력 모드로 전환하는 명령
    • 수정 혹은 삭제 명령
    • 복사 및 붙이기
    • 기타 명령

vi 시작과 종료

  • vi의 기본 기능

    • 지정한 파일을 편집
    • 파일명을 지정하지 않으면 빈 파일이 열리고 파일명은 저장할 때 지정 가능
  • 형식 : vi [파일명…]
  • 사용 예 : vi hello.c

vi 시작하기

  • 파일명을 지정하거나 지정하지 않을 수도 있음


vi 종료하고 파일 저장하기

  • 명령 모드에서 파일 저장과 종료를 동시 수행 : ZZ(Shift+zz), 파일 저장 후 바로 종료함
  • 다른 명령키들은 마지막 행 모드에서 실행할 수 있음
  • 마지막 행 모드로 가려면 콜론(“:”) 키를 먼저 입력


입력 모드로의 전환

  • vi는 명령 모드에서 시작
  • 내용을 입력하거나 편집하려면 명령 모드에서 입력 모드로 전환


  • 명령키를 사용한 입력 모드 전환

    • 명령 모드에서 i 명령키를 입력하면 내용 입력 가능
    • 명령 모드에서 o 명령키를 입력하면 현재 커서 위치 다음 행에 글자 입력 가능
    • 명령 모드에서 a 명령키를 입력하면 현재 커서 위치 오른쪽에 글자 입력 가능
    • 내용 모두 입력한 뒤 명령 모드로 돌아가려면 Esc 키를 누름
vi Insert Mode Test
unix linux vi-editor
~
~
~
~

커서 이동

  • vi에서 커서 이동은 키보드를 이용


화면 이동

  • 파일 크기가 터미널 화면 크기보다 클 경우 화면 이동
  • 화면 이동 명령키

    • Ctrl + f 명령키는 현재 보이는 부분의 아래 부분으로 한 화면 이동
    • Ctrl + b 명령키는 현재 보이는 부분의 윗부분으로 한 화면 이동


  • 마지막 행 모드에서 커서 이동

    • :을 입력해 마지막 행으로 전환한 뒤 이동하려는 행 번호 입력
    • 행 번호 대신 $를 입력하면 파일의 마지막 행으로 이동