[유닉스] 편집기 (vi) - 내용 수정 및 삭제


내용 수정 및 삭제



내용 수정하기

  • 한 글자만 수정, 단어별로 수정, 수정할 글자 수 지정해서 수정


내용 삭제/취소하기

  • 입력 모드에서 입력 중에 틀린 글자 삭제할 때는 Backspace 키나 Delete 키를 이용하면 됨
  • 명령 모드에서는 문자를 삭제하거나 행을 삭제하기 위해 별도의 명령키 존재
  • 삭제할 문자 수나 행 수를 지정하려면 명령키 앞에 숫자를 지정


편집 기능



복사하기, 붙이기, 잘라내기

  • 소문자 yy 명령키 : 해당 행을 복사
  • 커서를 원하는 위치로 이동 후 p 명령키 : 붙이기
  • dd 명령키로 행 삭제 후 p 명령키 입력하면 “잘라내서 붙이기”


  • 커서 위치에서 1행과 2행 복사하기
Hello, World!
============
  • 1행에서 2yy 명령키 입력 후 2행에서 p 명령키 입력
Hello, World!
============
Hello, World!
============

버퍼의 사용

  • 버퍼 : 복사하거나 잘라낸 내용을 저장해두는 임시 저장 공간
  • 윈도우의 클립보드와 같은 기능
  • yy 명령키를 사용해 복사할 경우 복사된 내용은 버퍼에 저장
  • 언네임드(unnamed) 버퍼

    • 이름 붙이지 않은 버퍼
    • 한 번에 하나의 내용만 저장
  • 네임드(named) 버퍼

    • 이름 붙인 버퍼
    • 각기 다른 이름을 붙인 버퍼에 별도로 저장할 수 있는 내용을 모두 저장하고 사용 가능
  • 네임드 버퍼 사용

    • 버퍼 이름 붙이기 : “(따옴표) + 문자, 또는 ”+숫자(숫자 버퍼라고도 함)
    • 네임드 버퍼 : “a, ”b, “c, ……, ”z
    • 숫자 버퍼 : “1, ”2, “3, …… ”9
    • 네임드 버퍼에 커서 위치한 행 저장 : “ayy, 붙이기 : ”ap
  • 네임드 버퍼 사용하여 1행과 2행을 따로 복사하여 붙이기
Hello, World!
============
  • 커서를 1행에 위치하고 “ayy 입력
  • 커서를 2행으로 이동 후 “byy 입력
  • 2행 다음에 b 버퍼 먼저 붙이기 하려면, “bp, ”ap를 차례로 입력
Hello, World!
============
============
Hello, World!

마지막 행 모드에서 복사하기와 잘라내기

  • 마지막 행 모드에서 행을 복사하고 잘라내기 할 때는 범위를 지정한 후 수행

  • 범위 지정하기

    • vi에서 범위 지정은 마지막 행 모드에서만 가능
    • 행번호와 특수 문자 사용
    • 특수문자 : 현재 커서가 있는 행을 나타내는 .(마침표), 마지막 행을 나타내는 $, %



  • 복사하기/잘라내기

    • :은 마지막 행 모드로 이동하기 위한 기호


검색하기

  • vi에서 특정 단어를 검색하거나 검색한 단어를 다른 단어로 바꾸기 위한 명령은 마지막 행 모드에서 제공
  • 검색하기 위해 마지막 행 모드로 가려면 “/”나 “?”를 입력
  • “/”는 커서의 위치에서 아래 방향으로 검색
  • “?”는 커서의 위치에서 위 방향으로 검색


바꾸기

  • 기존의 문자열을 다른 문자열로 바꾸려면 :를 입력해 마지막 행 모드로 이동
  • 바꾸기 명령은 파일 전체를 대상으로 할 수도 있고 특정 범위만 지정해 실행할 수도 있음


  • and 패턴을 찾아 or로 바꿀 때 수정할지 여부를 묻는 명령 사용
:%s/and/or/gc
  • and를 or로 바꿀 때마다 아래와 같은 질문을 함
Starry, starry night
Paint your palette blue and gray
Look out on a summer’s day
With eyes that know the darkness in my soul
Shadows on the hills
Sketch the trees and the daffodils;
Catch the breeze and the winter chills
In colors on the snowy linen land.
~
replace with or(y/n/a/q/l/^E/^Y)?
  • 패턴에 대한 옵션의 의미