본문 바로가기
Base/Linux(CentOS)

4. VI(M) 에디터

by 귀멸 2022. 6. 18.

리눅스에서 가장 많이 사용되는 문서 편집기로 기본 명령어 만큼이나 기초로서 중요한 주제이다.

리눅스에 많은 프로그램에 대한 설정값 조작이 문서로 된 설정 파일을 직접 문서 편집기로 조작해 주어야하기 때문에

이 프로그램은 아주 능숙하게 다룰 필요가 있다. 

 

# VI(M) 에디터
- Linux에서 기본적으로 제공하는 문서 편집기(CLI 환경에서 사용)

0. 사용 환경
    ** 숫자 오른쪽 num-pad 사용 안됨
        명령 모드 : 기본 사용 환경, 커서 이동, 복사/잘라내기/붙여넣기, 삭제, 입력/실행 모드 전환
        입력 모드 : 문서의 내용을 변경하기 위한 환경, 내용 추가/수정/삭제, 명령모드 전환
        실행 모드 : 그 외 대부분의 기능들을 사용하기 위한 환경, 명령 모드 전환
        (ex 모드)
    * 입력 모드와 실행 모드 간의 전환은 불가능

    

1. vi 에디터 실행
   vi                           : 파일 이름 지정 없이 vi 에디터 실행
   vi [새로운 파일명]  : 파일명의 새 파일을 만드는 vi 에디터 실행
   vi [기존 파일]         : 기존 파일을 불러와 vi 에디터 실행
 
2. 명령모드 사용 방법
## 커서 이동
    1) 글자 단위 커서 이동 (방향키로 가능)
        h : 한 글자 왼쪽으로
        j : 한 글자 아래로
        k : 한 글자 위로
        l : 한 글자 오른쪽으로
   

     2) 단어 단위 커서 이동
        > 소문자로 눌러주면 특수문자를 별개의 단어로 인식
          대문자로 눌러주면 공백문자와 엔터를 기준으로만 단어를 인식
        w : 다음 단어 첫글자로 이동
        b : 이전 단어 첫글자로 이동
        e : 다음 단어 마지막 글자로 이동

 

     3) 줄 내부 커서 이동
        0  : 줄의 첫 글자로 이동
        $  : 줄의 마지막 글자로 이동
   
     4) 화면 내부 커서 이동
        H   : 현재 화면 첫줄 맨 앞으로 이동
        M   : 현재 화면 가운데 줄 맨 앞으로 이동
        L    : 현재 화면 마지막 줄 맨 앞으로 이동
  
     5) 문서 내부 커서 이동
        gg    : 전체 문서 첫줄로 이동      (=[[)
        G     : 전체 문서 마지막 줄로 이동  (=]])

 

## 삭제
       x    : 커서 오른쪽 내용이 삭제 (delete 키와 동일한 기능)
              > 커서 오른쪽 내용이 다 지워지면 왼쪽도 지우기 시작 (backspace와 동일)
       X    : 커서 왼쪽 내용이 삭제 (backspace와 동일)
              > 커서 왼쪽 내용이 다 지워지면 추가 작업 진행 X

## 복사, 잘라내기, 붙여넣기
      yy       : 커서가 있는 줄 복사
      숫자 + yy : 커서가 있는 줄 부터 숫자만큼의 줄 복사
      dd       : 커서가 있는 줄 잘라내기
      숫자 + dd : 커서가 있는 줄 부터 숫자만큼의 잘라내기
      p        : 커서 뒷쪽에 붙여넣기
      P        : 커서 앞쪽에 붙여넣기

 

## 실행 취소, 다시 실행
     u        : 실행 취소(되돌리기)
     ctrl + r : 다시 실행

 

## 명령 모드   입력 모드 전환 방법
       i    : 커서 왼쪽으로 내용 입력
       I    : 해당 줄 맨 왼쪽에서 내용 입력
       a    : 커서 오른쪽으로 내용 입력
       A    : 해당 줄 맨 오른쪽에서 내용 입력
       o    : 커서 아래쪽에 빈 줄 삽입 후 내용 입력
       O    : 커서 위쪽에 빈 줄 삽입 후 내용 입력
       s    : 커서가 있던 글자를 지우고 내용 입력
       S    : 해당 줄 삭제 후 내용 입력

 

## 입력 모드 → 다시 명령 모드로 전환 방법

       - esc : 입력 모드 → 명령 모드

 

3. 실행 모드 사용 방법 (명령 모드 상태에서)
  1) 줄 번호 출력/숨기기
      :set nu       : 줄번호 출력
      :set nonu    : 줄번호 숨기기

  2) 검색
      /[검색할 단어]     : 위에서 아래로 Pattern 검색
      ?[검색할 단어]    : 아래에서 위로 Pattern 검색
     
      * 동작 후 추가 입력
       n           : 검색 방향과 같은 방향으로 다음 찾기
       N           : 검색 방향의 반대 방향으로 다음 찾기
 
   3) 찾아 바꾸기(치환)
       :[범위]s/찾을내용/바꿀내용/[옵션]

      * 범위
       생략      : 커서가 있는 줄의 내용을 찾아서 변경
       n           : n번째 줄에 있는 내용을 찾아서 변경
       n1,n2    : n1 ~ n2 줄에 있는 내용을 찾아서 변경
       %          : 전체 문서 내용 중 찾아서 변경 = (1,$)

      * 옵션
       생략      : 해당줄에 찾아 바꾸기가 실행되면 처음 것 바꾸고 다음줄로 넘어감
       g           : 한 줄에 찾아 바꿀 내용이 여러개인 경우 한번에 변경

   4) 현재 사용 중인 파일 확인
       :f          : 파일명과 커서 위치 출력

   5) 리눅스 명령어 사용
       :! <명령어>   vi를 잠시 멈추고 리눅스 명령어를 동작 시킴

   6) 문서에 내용 삽입
       :.! <명령어>  : 커서가 있던 줄의 내용을 전부 지우고 리눅스 명령어 결과물을 파일에 삽입
                      > 명령어는 화면에 결과가 출력되는 명령어 사용
       :r! <명령어>  : 커서가 있던 줄 아래로 리눅스 명령어 결과물을 파일에 삽입
                      > 명령어는 화면에 결과가 출력되는 명령어 사용
       :r <파일명>   : 커서가 있던 줄 아래로 다른 파일의 내용 삽입
     
        * :r, :r! 의 경우 : 기호와 r 사이에 숫자를 넣어서 해당 줄 아래로 내용 삽입이 가능

    7) 저장, 종료, 불러오기
    > !를 붙여서 강제로 동작이 가능(ex.  :q! = 강제 종료)
   :w              : 저장
   :w 파일명  : 다른이름으로 저장
   :q              : 종료
   :wq            : 저장 후 종료
   :e 파일명   : 기존 문서를 종료하고 다른문서 불러오기
   :enew        : 기존 문서를 종료하고 새 파일 열기
 
  8) 화면 분할
     ctrl + w + n   : 화면 분할
     ctrl + w + w   : 분할 화면 간 커서 이동

댓글