본문 바로가기

Linux/CentOS Linux 6.5

Chapter 3. VI Editor

Chapter 3. VI Editor
1. VI Editor란
 - Unix와 Linux 환경에서 많이 쓰이는 문서 편집기
 - 줄 단위 편집기가 아니며 한 화면을 편집하기 때문에 Visual Editor의 약자
 - VI Editor Mode
  ‧ 명령 Mode
  ‧ 실행 Mode
  ‧ 입력 Mode

 

2. VI Editor의 Mode
 - 명령 Mode

  ‧ VI Editor의 기본 Mode
  ‧ VI가 처음 실행되거나, 입력 Mode에서 'ESC'를 입력한 상태
  ‧ Cursor 이동, 문자열 수정, 복사, 붙여넣기 등
  ‧ 'Enter'를 입력할 필요 없이 각각의 목적에 따른 명령을 입력하면 바로 실행
  ‧ 명령 Mode의 단축키
   ◦  Cursor 이동

   ▹ h
    ▸  Cursor 왼쪽으로 한 칸 이동
   ▹ j
    ▸  Cursor 아래쪽으로 한 줄 이동
   ▹ k
    ▸  Cursor 위쪽으로 한 줄 이동
   ▹ l
    ▸  Cursor 오른쪽으로 한 칸 이동
   ▹ W
    ▸  공백(space)를 기준으로 다음 단어의 처음으로 이동(Forward)
   ▹ w
    ▸  특수문자 또한 하나의 단어로 판단하며 단어 단위로 다음 단어의 처음으로 이동
   ▹ E
    ▸  공백(space)를 기준으로 다음 단어의 마지막으로 이동(End)
   ▹ e
    ▸  특수문자 또한 하나의 단어로 판단하며 단어 단위로 다음 단어의 처음으로 이동
   ▹ B
    ▸  공백(space)를 기준으로 앞 단어의 처음으로 이동(Backward)
   ▹ b
    ▸  특수문자 또한 하나의 단어로 판단하며 단어 단위로 앞 단어의 처음으로 이동
   ▹ 0
    ▸  행의 처음으로 이동
   ▹ $
    ▸  행의 마지막으로 이동
   ▹ G
    ▸  문서의 마지막으로 이동
   ▹ gg
    ▸  문서의 처음으로 이동
   ▹ H
    ▸  현재 화면의 가장 상단으로 이동
   ▹ M
    ▸  현재 화면의 정중앙으로 이동
   ▹ L
    ▸  현재 화면의 가장 하단으로 이동
  ◦ 명령 Mode에서의 삭제, 복사, 붙여넣기
   ▹ x
    ▸  Cursor가 있는 문자 삭제
   ▹ X
    ▸  Cursor가 있는 앞 문자 삭제
   ▹ dd
    ▸  현재 Cursor의 행 삭제
   ▹ 숫자 + dd
    ▸  현재 Cursor의 위치로부터 숫자만큼 아래 행까지 삭제
   ▹ yy
    ▸ 현재 Cursor의 행 복사
   ▹ 숫자 + yy
    ▸  현재 Cursor의 위치로부터 숫자만큼 아래 행까지 복사
   ▹ P
     ▸  복사한 내용을 현재 Cursor 위치 이전에 붙여넣기
   ▹ p
    ▸  복사한 내용을 현재 Cursor 위치 이후에 붙여넣기
  ◦ 책갈피(Book Mark) 기능
   ▹ VI는 책갈피 기능이 있으며 이 책갈피 기능은 VI를 종료하기 전까지만 유지된다.
   ▹ 같은 문자에 다른 위치의 책갈피를 지정할 경우 덮어쓰기가 되며 이전에 지정한 위치는 사라진다.
   ▹ 책갈피 설정
    ▸  책갈피를 설정할 위치에서 키보드의 m을 누른 후 지정할 Key를 a~z, A~Z를 골라 누른다.
    ▸  a~z, A~Z 즉, 52개의 책갈피를 지정할 수 있다.
   ▹ 책갈피 이동 방법
    ▸  Back quote(`) + ?(a~z, A~Z) : 책갈피한 위치로 이동
    ▸  quote(‘) + ?(a~z, A~Z) : 책갈피한 줄의 처음으로 이동
    ▸  quote(‘) quote(‘) : 원래 위치로 돌아감(quote 2회)
  ◦ 명령 Mode에서 입력 Mode 전환
   ▹ i
    ▸  현재 Cursor 위치에서 입력 Mode로 전환
   ▹ I
    ▸  현재 Cursor 위치의 행 제일 처음에서 입력 Mode로 전환
   ▹ a
    ▸  현재 Cursor 위치에서 우측으로 한 칸 이동 후 입력 Mode로 전환
   ▹ A
    ▸  현재 Cursor 위치의 행 가장 마지막 위치에서 입력 Mode로 전환
   ▹ o
    ▸  Cursor 아래에 새로운 행을 추가하고 입력 Mode로 전환
   ▹ s
    ▸  현재 Cursor 위치의 문자를 지우고 입력 Mode로 전환
   ▹ S
    ▸  현재 Cursor 위치 행의 모든 문자를 지우고 입력 Mode로 전환
 - 입력 Mode

  ‧ 일반 문서를 작성하는 것과 같은 Mode이다
  ‧ 입력 Mode에서 명령 Mode로 전환하려면 'Esc' 입력하면 된다.
 - 실행 Mode

  ‧ 검색, 치환 등 Vi에 실행, 종료 또는 설정을 하기위한 Mode이다.
  ‧ 실행 Mode의 단축키
  ◦ 검색

   ▹ / Pattern
    ▸  Pattern을 검색
    ▸  n : 아래 방향으로 동일 Pattern 찾기
    ▸  N : 위 방향으로 동일 Pattern 찾기
   ▹ ? Pattern
    ▸  Pattern을 검색
    ▸  N : 아래 방향으로 동일 Pattern 찾기
    ▸  n : 위 방향으로 동일 Pattern 찾기
  ◦ 치환
   ▹ [범위] s / [Old] / [New] / [Option]
    ▸  범위

     ▫  범위를  지정하지 않을 경우 :  현재 위치의 내용 치환
     ▫  숫자 하나만 적을 경우 : 숫자에 해당하는 줄의 위치의 내용 치환
     ▫  숫자1 , 숫자2 : 숫자1과 숫자2로 범위를 지정해 내용 치환
     ▫  % : 전체 범위에서 내용 치환
    ▸  [Old] : 치환 전 내용
    ▸  [New] : 치환 후 내용
    ▸  [Option]
     ▫  g : 한 줄의 내용에서 치환을 할 때는 하나하나씩 바뀌는데 g를 이용하면 한 번에 다 바꿀 수 있다.
  ◦ Shell 명령어
   ▹ :! [명령어]
    ▸  vi에서 잠시 빠져나와 명령어를 수행 후 다시 vi로 돌아간다.
   ▹ :.! [명령어]
    ▸  수행한 명령어를 vi에 출력한다.
    ▸  현재 Cursor 위치의 내용이 삭제되므로 한 줄을 추가하고 사용해야한다.
  ◦ 화면 나누기
   ▹ [n]split[filename]
    ▸  n은 화면의 크기를 말한다.
    ▸  수평으로 화면을 나누며 기존 File 또는 새로 만든 File과 화면을 수평으로 분할해 사용한다.
    ▸  새로 File을 만들 때 명령 Mode에서 Ctrl + wn으로 나누는 방법도 있다.
    ▸  Ctrl + ww로 창간에 이동한다.
   ▹ [n]vs[filename]
    ▸  n은 화면의 크기를 말한다.
    ▸  수직으로 화면을 나누며 기존 File 또는 새로 만든 File과 화면을 수직으로 분할해 사용한다.
    ▸  새로 File을 만들 때 명령 Mode에서 Ctrl + wv으로 나누는 방법도 있다.
    ▸  Ctrl + ww로 창간에 이동한다.
  ‧ File 관련
  ◦ :e [filename]
   ▹ 현재 File에서 다른 File 열기
   ▹ 현재 File을 강제로 닫고 열려면 e!로 열어야한다.
  ◦ :enew
   ▹ 현재 창을 닫고 빈 문서를 연다.
   ▹ 현재 File을 강제로 닫고 열려면 enew!로 열어야한다.
  ◦ :q
   ▹ 현재 창을 종료
   ▹ 현재 창을 저장하지 않고 강제로 닫으려면 q!로 닫아야한다.
  ◦ :w
   ▹ 현재 File을 저장
   ▹ 현재 화면을 다른 File로 저장하려면 :w [filename]으로 한다.
   ▹ 현재 File을 저장하고 닫으려면 :wq을 사용한다.
  ‧ File 및 실행 관련
  ◦ :w >> [filename]

   ▹ 해당 File에 내용추가
  ◦ f
   ▹ 현재 작업 중인 File의 정보(File의 이름과 Line 수)
  ◦ [n]r[filename]
   ▹ 해당 File의 내용을 현재 편집중인 파일의 n 번째 줄 아래부터 삽입
  ◦ [n]r![command]
   ▹ 명령어 결과를 현재 File의 n 번째 줄 아래부터 삽입
  ‧ 그 외의 명령어
  ◦ :set ts=?

   ▹ Tab 크기 ?만큼으로 조정
  ◦ :set nu
   ▹ Line Number 활성화
  ◦ :set nonu
   ▹ Line Number 비활성화
  ◦ :nohl
   ▹ High light 비활성화

 

3. Vi 설정 File
 - /usr/share/vim
  ‧ vim 설정 File이 위치한 Directory
 - /etc/vimrc
  ‧ 시스템에 접속하는 모든 사용자가 공통적으로 적용받는 vim 설정 File
 - 사용자 개별 설정 File
  ‧ /usr/share/vim/vim70/vimrc_example.vim을 사용자의 Home Directory에 .vimrc로 복사한 후 수정