본문 바로가기

운영체제/리눅스

VI 에디터 사용법

리눅스에서 사용하는 편집기인 VI
윈도우 메모장 같은 툴인데, 상당히 강력하죠.
예전에는 이걸로 모~~든 걸 다할수 있었죠 ㅋㅋ
http://cafe.naver.com/okh0217
에서 오기훈님 께서 정리하신 사용법을 올립니다.


1. 화면단위 편집기(Screen Editor : VI)

 1) vi란? (vi는 Visual의 약자이다.)
  시스템을 관리하기 위한 DB화일 또는 일반 문자화일을 편집하거나 기타
 프로그램 언어를 코딩할 경우 화면단위로 편집할 수 있는 기능을 제공한다
 (VI를 사용하지 못할 경우 행단위 편집기인 ed를 사용 할 수 있다.)

  ** 참고로 이 VI에디터의 도스버전이 자료실에 올라와 있다.

 2) vi의 시작과 종료

 편집기 vi를 호출하기 위한 명령어의 일반적인 형태

 % vi filename                                                     
┌───────────────────────────────┐
│~                                                                                          │
│~                                                                                          │
│~                                                                                          │
│~                                                                                          │
│~                     편 집 화 면                                                      │
│~                                                                                          │
│~                                                                                          │
│~                                                                                          │
│"filename"[New file] -------> 명령어 라인                                  │
└───────────────────────────────┘
 
 ed에서와 같이 "filename"이 현재 디렉토리내에 존재하는 경우 그 화일 내
용은 편집을 위하여 임시 버퍼에 복사된다. 물론 "filename"이라는 화일이
존재하지 않으면 새로운 화일이 생성된다.

 vi를 빠져 나오기 위한 명령 (ZZ, :q, :wq )

 . ZZ  임시 버퍼의 내용을 vi로 호출할때 사용되었던 화일에 기록한후 vi
를 빠져나온다.

 . :q  vi를 중단하는 명령으로 ed의 q(quit)명령과 씔이 버퍼의 내용을 기
록하지 않는다.

 . :wq ZZ 명령과 같은 것으로 이것은 기록 명령인 :w와 중지 명령인 :q를
연속적으로 수행하는 것과 같은 효과이다.

이러한 명령은 반드시 편집기의 명령어 모드에서 수행되어야 한다.


                           ┌───────┐
                           │ (shell mode)  │
                           │    쉘모드        │
                           └──┬─┬──┘
                                    │  │
                                    │  │
                          VI 실행│  │VI 종료
                                    │  │
                                    │  │
                           ┌──┴─┴───┐
Postion  ─────┤(command mode)├───── TEXT Deleting
Changing              │  명령어 모드      │
                           └────────┘
                                    │  │
                                    │  │
                        문서편집│  │ESC
                                    │  │
                                    │  │
                           ┌──┴─┴──┐
                           │(Insert mode)  │
                           │   입력모드      │
                           └───────┘

4) vi 사용법 (명령어 모드에서 사용되는 키이)

 (1) 화면제어

  ctrl + f    화면전체의 내용이 한 화면 위로 이동
  ctrl + b    화면전체의 내용이 한 화면 아래로 이동
  ctrl + e    화면전체의 내용이 한줄씩 위로 이동한다.
  ctrl + y    화면전체의 내용이 한줄씩 아래로 이동한다.

 (2) 커서(Cursor)의 제어
                                                                      ┌──┐
   ENTER Key  다음행의 처음으로 이동                 │ k    │
   j          한행 아래로 이동                                 │      │
   k          한행 위로 이동                          ┌──┼──┼──┐
   l          현재행의 오른쪽으로 이동            │ h   │      │   l  │
   h          현재행의 왼쪽으로 이동              │      │      │      │
                                                             └──┼──┼──┘
   w          다음단어의 첫자로 이동                       │  j   │
   b          바로 이전 단어의 앞 빈칸으로 이동         │      │
   e          현재단어의 끝자로 이동                        └──┘
 
   ^          행의 제일왼쪽으로 이동
   $          행의 제일 오른쪽으로 이동
   H          화면의 좌측상단으로 이동
   M          화면의 좌측 중간으로 이동
   L          화면의 좌측하단으로 이동

   숫자G      지정한 숫자의 행으로 이동
   :숫자     
   /문자열/   오른쪽 하방향으로 문자열 검색
   ?문자열?   왼쪽 하방향으로 문자열 검색
   n          아래로 검색을 계속함
   N          위로 검색을 계속함
   ctrl+g     현재의 화일이름과 행 수를 알려줌.

 (3) 문안편집

   a (append) 현재 커서가 위치한 문자의 다음위치부터 임력함
   A          현재 커서가 있는 행의 마지막부터 입력함
   i (insert) 현재 커서가 있는 위치부터 입력함
   I          현재 커서가 있는 행의 처음부터 입력함
   o (open)   현재커서가 있는 행의 다음행에 새로운 한행을 삽입하며서
             입력함
   O          현재커서가 있는위치에 새로운 한행을 삽입하면서 입력함

 (4) 문안의 삭제

   x          커서위치의 한문자 삭제
   dw         커서위치의 한행을 삭제
   dd         커서위치의 한행을 삭제
   :1,$ d     1행부터 마지막행까지 삭제
   D          커서위치의 오른쪽 모두 삭제

 (5) 문안의 이동및 복사

   nyy        n행을 버퍼에 복사
   p          버퍼에 복사된 내용을 화면에 인쇄한다.

  -이동

   1. 3dd     현재커서가 위치한 행으로부터 3행을 삭제(이동원지정)
              (이동하고자 하는 3행을 현위치에서 삭제)
   2. 이동시키고자 하는 행으로 커서를 가져간다.
   3. p       지워진 3행이 커서가위치한 행 부터 지웠던 3행이 인쇄된다.

 -복사

   1. yy      현재커서가 위치한행을 버퍼에 복사한다.( 3yy : 3행복사)
   2. 복사시키고자 하는 행으로 커서를 가져간다.
   3. p       버퍼에 복사된 내용이 인쇄된다.

 (6) 기타명령어

  U (Undo)    직전에 수행한 명령을 취소 또는 복구한다.
  r           한문자 변경
  cw          한단어 변경
  J           행결합
  enter key   행삽입
  :1,$ s/test/TEST/g   문장의 1행부터 마지막까지 "test"를 찾아서 대문
              자 "TEST"로 치환한다.
  :sh         shell을 수행한다.
  :!unix 명령어 unix 명령어를 수행하고 vi로 다시 돌아온다.
  :r filename 지정한 화일을 수행하고 vi로 다시 돌아온다.
  :w filename 현재내용을 지정한 filename으로 보관한다.
  :1, 10 w filename 1행부터 10행까지만 지정한 filename으로 보관한다.