TLCL 12장 정리 (vi 소개부터 활용까지)

Ma_Seokjae·2023년 4월 15일
post-thumbnail

12장 A Gentle Introduction to vi


vi?

Unix 및 Linux 시스템에서 사용되는 텍스트 에디터로, "Visual Editor"의 약어
vi는 명령 모드(command mode), 편집 모드(insert mode), 마지막 행 모드(last line mode)로 구성

Starting and Stopping vi

  • vi 를 실행시키는 명령어
    $ vi
  • vi 를 종료시키는 명령어
    :q
    :q!
    여기서! 주의할 점
    이미 vi 편집기 내부에 들어온 상태이기 때문에, ESC를 입력한 후 종료 명령어 입력

Editing Modes

예시를 통해 설명

$ rm -f foo.txt				// foo.txt라는 파일을 "-f"옵션을 사용해서 강제로 삭제
$ vi foo.txt				// "vi" 명령어를 통해 foo.txt 파일의 편집 모드로 입장

입력 후

~
~
~
~
~
~
~
~
~
~
~
"foo.txt" [New File]

"foo.txt" 파일의 편집 모드로 입장
여기서 보면 "~"은 해당 line아무 문자가 존재하지 않는다는 것을 의미

Entering Insert Mode

  • 편집 모드(insert mode) 실행
    i 누르기

하단에 -- INSERT -- 가 보인다면 정상적으로 시작

여기서, iinsert 를 의미하며 자유롭게 텍스트 입력 가능

  • 편집 모드(insert mode) 종료
    ESC 누르기

Saving Our Work

편집 모드 종료(ESC 누른 상태) 후, 입력한 내용을 저장

  • 파일에 위치한 상태에서 저장만 수행
    :w + Enter

Moving the Cursor Around

vi에서 커서를 조작하는 방법

  • 오른쪽 문자로 이동
    l or ▶ (오른쪽 방향키)

  • 왼쪽 문자로 이동
    h or ◀ (왼쪽 방향키)

  • 아래쪽 문자로 이동
    j or ▼ (아래쪽 방향키)

  • 위쪽 문자로 이동
    k or ▲ (위쪽 방향키)

  • 현재 라인의 시작으로 이동
    0

  • 현재 라인에서 가장 왼쪽에 위치한 공백이 아닌 문자로 이동
    ^

  • 현재 라인의 끝으로 이동
    $

  • 다음 단어나 구두점 문자의 시작 부분으로 이동
    w

  • 다음 단어의 시작 부분으로 이동 (구두점 문자는 무시)
    W

  • 이전 단어나 구두점 문자의 시작 부분으로 이동
    b

  • 이전 단어의 시작 부분으로 이동 (구두점 문자는 무시)
    B

  • 한 페이지 아래로 이동
    ctrl-f or Page Down

  • 한 페이지 위로 이동
    ctrl-b or Page Up

  • 지정한 라인 번호로 이동 (ex. "1G"는 파일의 첫 번째 줄로 이동)
    numberG

  • 파일의 마지막 줄로 이동
    G


Basic Editing

  • 마지막 변경 사항으로 되돌리기
    ESC + u

Appending Text

  • 현재 위치 문자 바로 뒤 append insert
    ESC + a

  • 현재 라인 가장 끝 위치로 이동
    ESC + A

Opening a Line

  • 현재 라인 바로 아래 빈 라인 생성 후 이동
    ESC + o

  • 현재 라인 바로 위 빈 라인 생성 후 이동
    ESC + O

Deleting Text

  • 삭제 (Delete)

    • 커서가 위치한 문자 하나
      dx

    • 커서가 위치한 문자와 그 뒤의 두 개의 문자
      d3x

    • 커서가 위치한 행 전체
      dd

    • 커서가 위치한 행부터 그 다음 네 줄까지
      5dd

    • 현재 커서 위치에서 바로 다음 단어의 첫 글자까지
      dw

    • 현재 커서 위치부터 현재 행의 끝까지
      d$

    • 현재 커서 위치부터 현재 행의 첫 번째 글자까지
      d0

    • 현재 커서 위치부터 현재 행에서 첫 번째 공백 문자 이외의 문자가 나타나는 위치까지
      d^

    • 현재 행부터 파일의 끝까지
      dG

    • 현재 행부터 파일의 20번째 줄까지
      d20G

Cutting, Copying, and Pasting Text

  • 복사 (Copy)

    • 현재 행 전체
      yy

    • 현재 커서 위치부터 아래로 5줄까지
      5yy

    • 현재 커서 위치부터 다음 단어의 시작까지
      yW

    • 현재 커서 위치부터 해당 줄의 끝까지
      y$

    • 현재 커서 위치부터 해당 줄의 처음까지
      y0

    • 현재 커서 위치부터 해당 줄의 첫 번째 비공백 문자까지
      y^

    • 현재 행부터 파일의 끝까지
      yG

    • 현재 행부터 파일의 20번째 줄까지
      y20G

  • 붙여넣기 (Paste)

    • 복사한 내용 붙여 넣기
      p

Joining Lines

  • 현재 커서가 위치한 줄과 그 다음 줄하나로 합침
    J
    (주의! 대문자 J만 가능)

Search-and-Replace

Searching Within a Line

  • 지정된 문자다음 인스턴스를 검색하고 커서를 해당 위치로 이동
    ESC + f + 지정 문자
    ex) fa // 지정 문자: a or ft // 지정 문자: t

  • 지정된 문자이전 인스턴스를 검색하고 커서를 해당 위치로 이동
    ESC + F + 지정 문자

Searching the Entire File

  • 단어를 찾기 위한 명령어
    ESC + / + 단어 or 구 + Enter

Global Search-and-Replace

  • ex 명령어를 사용하여 범위 내의 여러 줄 또는 전체 파일에서 검색 및 대체 작업
    ESC + :%s/pattern/replace/flags

    • %
      substitution 대상이 되는 범위를 지정, %파일 전체를 의미

    • s
      substitution 명령임을 나타냄

    • pattern
      찾을 패턴이나 문자열을 지정

    • replace
      대체할 문자열을 지정

    • flags
      대소문자 구분 여부전체 대체 여부 등을 지정
      !!!중요!!! /g를 쓰느냐 안쓰느냐 차이..?

      • 사용 O
        파일 내에서 발견되는 모든 patternreplace로 변경
      • 사용 X
        파일 내에서 최초로 발견되는 patternreplace로 변경

Editing Multiple Files

예시를 통해 설명

vi file1 file2 file3...		// 편집하고 싶은 여러 파일을 차례로 입력

이를 통해 여러 파일한번에 수정 가능

Swithcing Between Files

  • 동시에 여러 파일을 편집 중인 경우 다음 파일로 이동
    ESC + :bn
  • 파일을 열었지만 다른 파일로 이동하여 작업 중인 경우 이전 파일로 이동
    ESC + :bp

Opening Additional Files for Editing

  • 현재 편집 중인 파일은 닫히고 입력한 파일오픈
    :e filename
  • 현재 파일이 저장되고, 다음 파일이 자동으로 오픈
    :wnext
    현재 파일이 마지막일 경우, 편집기 종료

Saving Our Work

파일 저장 여러가지 방법

  • 현재 파일 저장 후, vi 종료
    ESC + ZZ
    ESC + :wq

  • 선택적 파일 이름 지정
    :w filename


혹시 이해가 안되는 부분이 있으시거나, 잘못된 부분 있다면 댓글로 남겨주시면 감사하겠습니다 :)

profile
Why not change the code?

0개의 댓글