본문 바로가기
秋 - Tip

vi 에디터 사용방법 및 정리

by 민수아빠™ 2008. 4. 18.
vi 에디터  
             1 Cursor 위치를 변경하는 명령들
             2 vi 명령들
             3 자세한 정보를 가져 오려면...
             
  명령을 잘 활용하는 방법은 'man' 명령을 이용하는 것입니다.
  UNIX 명령에 좀 익숙 하신분들은 'man' 명령을 활용 하십시오.
 
1.
                       vi Cursor Positioning  
    - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - -
    :1G (go                                                            :
    :                      /\  ^b (back                                :
    :                      ||                    /\   ^u (up           :
    |----------------------||--------------------||--------------------|
    |H (home                                                           |
    |                               k                   O (open        |
    |I            i (insert        /\    a (append     P (put        A |
    |                              |                                   |
    |O <--------- h <-------  you are here  -------> l -------------->$|
    |                              |                                   |
    |M (middle     (backspace      \/    (space bar    p(put           |
    |                               j                   o (open        |
    |             Y (yank                         /string              |
    |                                             n repeat last search |
    |L (last                                      . repeat last command|
    |----------------------||--------------------||--------------------|
    :                      ||                    \/   ^d (down         :
    :                      \/  ^f (forward                             :
    :\$G (go                                                           :
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - "


2. vi 명령들  
                  1 Cursor를 옮기는 여러가지 방법
                  2 화면을 옮기는 여러가지 방법
                  3 한 화면 안에서 cursor를 옮기는 방법
                  4 한 line 안에서 cursor를 옮기는 방법
                  5 검색  
                  6 vi를 빠져나가는 방법  
                  7 삽입 mode  
                  8 Yanking : (Copying
                  9 Deleting  
                 10 Putting  
                 11 Interactive edit : (search and replace
                 12 Global 명령
                 13 Reading in files  
                 14 여러 화일의 edit
                 15 Miscellancenous commands  

1 Cursor를 옮기는 여러가지 방법  
                                       k(-
                                        /\  
                                        ||
                        h(bs    <-----       ----->   l(sp
                                        ||
                                        \/
                                       j(+
        h,j,k 와 i 를 이용하영 간단히 키보를 누르면 cursor의 위치가 변  
        경됩니다.
        (에 있는 키를 선택하여도 됩니다.
         bs : BackSpace                       sp : SPace bar "

2 화면을 옮기는 여러가지 방법  
                  ^f  -  (FORWARD 화면을 one page 앞으로 옮김
                  ^b  -  (BACKWARD 화면을 one page 뒤으로 옮김
                  ^d  -  (DOWN 화면을 반 page 앞으로 옮김
                  ^u  -  (UP 화면을 반 page 뒤으로 옮김
              ^  는 키보드의 ctrl 를 나타내는 것입니다."

3 한 화면 안에서 cursor를 옮기는 방법  
             H  -  HOME, 한 화면의 top line으로 옮긴다.
             M  -  MIDDLE, 한 화면의 중간으로 옮긴다.
             L  -  LAST, 한 화면의 마지막  line으로옮긴다.
             G  -  GOTO,  화일의 마지막  line으로 옮긴다.
             nG -  GOTO nth line the file (or :n
             ^G -  GIVES file status  
              ^  는 키보드의 를 나타내는 것입니다."

4 한 line 안에서 cursor를 옮기는 방법  
                      w  -  WORD, 한단어 앞으로
                      b  -  BACKWARD, 한단어  뒤로
                      e  -  END, 현재 cursor가 위치한 맨 뒤로
                      o  -  zero, line의 맨 앞으로 (or ^
                      $  -  end, line의 맨뒤로"
 
5 검색  
        /pattern -  scan (/ 'pattern'이라는글자를 현재 cursor가
                    위치한 곳의 다음 단어를 검색
        ?pattern -  scan (? 'pattern'이라는 글자를 현재 cursor가
                    위치한 곳의 앞 단어를 검색
        n     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음단어를 검색
        N     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음 앞 단어를  
                  검색"

6 vi를 빠져나가는 방법  
           :q!  -  화일의 내용을 저장하지 않고 exit
           :w   -  WRITE, vi를 빠져나가지 않으면서 내용을 저장
           :wq  -  WRITE and QUIT, vi를 빠져나가면서  내용을 저장
           ZZ   -  :wq의 명령과 같다."
 
7 삽입 mode  
             i   -  INSERT, cursor 위치 부터 문자 삽입
             I   -  INSERT, line의 맨 앞부터 문자 삽입
             a   -  APPEND, cursor 다음 위치 부터 문자 삽입
             A   -  APPEND, cursor 위치한 line의 끝부터 문자 삽입
             o   -  OPEN line, 현재의 line 다음에 line 삽입
             O   -  OPEN line, 현재의 line 앞에 line 삽입
             r   -  REPLACE, 한 문자만을 대치 (does not require ESC
             R   -  REPLACE, ESC 키가 입력될때 까지 대치  
             cw  -  CHANGE word, cursor가 위치한 곳의 단어 끝까지 대치
                    (cnw - change n number of words
             C   -  CHANGE, cursor가 위치한 곳에서 line 끝까지 대치
             u   -  UNDOES, 마지막 명령의 취소
             U   -  UNDOES, line전체를 원 상태로 복구
Note :   INSERT mode 를 만든는 모든 문자(i, a, o,r, c, s <대문자 포
         함>를 사용하는 경우 insert mode에서 입력 한 내용을  취소하고
         자 하면, ESC 를 누르고 undo를 수행하는 u를 입력하면 된다.
Note :  ESC (escape key 는 삽입(insert를 중지 시키고 명령어 mode로  
        돌아가는 키이다."

8 Yanking : (Copying  
        Y  -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        yy -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장
        nY -  YANKS n , n line을 사용자가 보이지 않는 buffer에 저장"

9 Deleting  
        x   -  deletes, 문자 하나를 삭제 (also 'd sp'
        dw  - DELETES words, 문자 하나를 삭제  
        D   -  DELETES, cursor가 있는 곳에서 부터 line끝 까지 삭제  
        dd  -  DELETES lines, line하나를 삭제 하고 보이지 않는 buffer
               에 저장
        ndd -  DELETES n, n line을 삭제 하고 보이지 않는 buffer에 저장
               (i.e., 10dd deletes 10 lines"

10 Putting  
        p  -  PUTS, cursor가 위치한 다음 line에 보이지 않는 buffer의
              내용을 삽입
        P  -  PUTS, cursor가 위치한 앞 line에 보이지 않는 buffer의
              내용을 삽입
        xp -  cursor 가 위치한 문자와 다음 문자를 교환"

11 Interactive edit : (search and replace  
        /pattern -  find, pattern이라는 문자를 검색
        cw       -  change word, 단어를 대치 (cw. dw, r, s, etc.
        n        -  find, 앞에서 검색했던 'pattern'이라는 문자를 검색
                    하는 반복 명령
        N        -  find, 앞에서 검색했던 'pattern'이라는 문자를 역순
                    으로 검색 하는 반복 명령"

12 Global 명령  
                 Global replacement  
                :1,\$s/string1/string2/g
                1 line부터 끝까지 string1 를 string2 로 대치
        e.g.,   :1,\$s/sun/SUN/
                      Global delete  
                :g/pattern/d
                1 line부터 끝까지 pattern 을 제거
        e.g.,   :g/###/d (to delete lines inserted by cc file.c | &  
                 error-v"

13 Reading in files  
        :r  file2 - cursor가 위치한 다음 line에 file2를 삽입"

14 여러 화일의 edit  
        :w      -  다른 화일을 읽기전에 현재의 화일을 저장 (file1
        :e file2  -  두번째 file을 edit하기 위해 load (file2
        :w      -  두번째 화일을 저장 (file2
        :e #    - original file 을 수정하기 위해 load (file1
        example:w              /* file1을 빠져 나가기전에 저장*/
                :e file2        /* file2 load   */
                        \"x4Y   /* buffer 'x'에 file2의 top 4 line을  
                                   저장 */
                :e #            /* file1 을 load (no changes */
                        \"xP    /* buffer 'x'에 저장 되어 있는 내용을  
                                   put */"

15 Miscellancenous commands  
        :! cmd  -  editor안에서 shell command를 수행 하고자 할때
        ~       -  (tilde or 'wavy', 대문자를 소문자로 소문자를 대문자
                    로 교환
        %       -  한 line안에서 (,,{,},[,]를 검색
        mx      -  문자 x에 현재 위치를 표시
        d'x     -  문자 x에 표시된 위치 부터 현재 cursor 위치 까지 삭
                    제
        ^V      -  allows for insertion of control characters (e.g.,  
                   ^L
        ?string -  scan (/ backward for 'pattern'
        :n,m w file -  n line에서 m line까지 내용을  file 이라는 이름  
                       으록 (e.g., 15,25 w file
        J       -  JOINS, cusor가 있는 line과 다음 line을 join  
        :set ai -  editor 가 자동적으로 insert tabs을 삽입
        :set list -  special characters 를 보여줌
                     (i.e., non-printable characters
        :set nows -  stop wraparound search
        :set ts=n -  set tab stops to be other than the default (8
        :set wm=n -  set wrap margin (automatic carriage return insert  
                     at n"