Operating System/Solaris2007/08/05 09:18

19장. VI Editor

* Cursor를 옮기는 여러 가지 방법

  h,j,k 와 i를 이용하여 간단히 Keyboard를 누르면 cursor의 위치가 변경됩니다.
  ()에 있는 키를 선택하여도 됩니다.

  ※ bs : BackSpace, sp : SPace bar

* 화면을 옮기는 여러 가지 방법

  ^f   - (FORWARD) 화면을 one page 앞으로 옮김
  ^b  - (BACKWARD) 화면을 one page 뒤로 옮김
  ^d  - (DOWN) 화면을 반 page 앞으로 옮김
  ^u  - (UP) 화면을 반 page 뒤로 옮김

   ※ ^ 는 키보드의 <Ctl>를 나타내는 것입니다.

* 한 화면 안에서 cursor를 옮기는 방법

  H   - HOME, 한 화면의 top line으로 옮긴다.
  M - MIDDLE, 한 화면의 중간으로 옮긴다.
  L   - LAST, 한 화면의 마지막 line으로 옮긴다.
  G - GOTO, File의 마지막 line으로 옮긴다.
  nG - GOTO nth line the file (or :n)
  ^G - GIVES file status

* 한 line 안에서 cursor를 옮기는 방법

  w   - WORD, 한 단어 앞으로
  b   - BACKWARD, 한 단어 뒤로
  e   - END, 현재 cursor가 위치한 맨 뒤로
  o   - zero, line의 맨 앞으로 (or ^)
  $   - end, line의 맨 뒤로

* 검색

  /pattern - scan (/) 'pattern'이라는 글자를 현재 cursor가 위치한 곳의 다음 단어를 검색
  ?pattern - scan (?) 'pattern'이라는 글자를 현재 cursor가 위치한 곳의 앞 단어를 검색

  n - 앞쪽에서 입력했었던 문자 'pattern' 의 다음단어를 검색
  N - 앞쪽에서 입력했었던 문자 'pattern' 의 다음 앞 단어를 검색

* vi를 빠져나가는 방법

  :q! - File의 내용을 저장하지 않고 exit
  :w - WRITE, vi를 빠져나가지 않으면서 내용을 저장
  :wq - WRITE and QUIT, vi를 빠져나가면서 내용을 저장
  ZZ - :wq의 명령과 같다.

* 삽입 mode

  Note : ESC (escape key) 는 삽입(insert)를 중지 시키고 명령어 mode로 돌아가는 Key이다.

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를 입력하면 된다.

* Yanking : (Copying)

  Y  - YANKS (copies) line을 사용자가 보이지 않는 buffer에 저장
  nY - YANKS n , n line을 사용자가 보이지 않는 buffer에 저장

* 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)

* Putting :

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

* Interactive edit : (search and replace)

  /pattern - find pattern to be replaced (as above)
  cw      - use a replacement comand (cw, dw, r, s, etc.)
  n       - find next occurrence of 'pattern'
           - repeat command

앞의 내용 참고

* Global replacement :

  :1,$s/string1/string2/g

          1 line부터 끝까지 string1 를 string2 로 대치
         e.g., :1,$s/sun/SUN/g

* Global delete :

          :g/pattern/d

          1 line부터 끝까지 pattern 을 제거
        e.g.,   :g/###/d (to delete lines inserted by cc file.c | & error-v)

* Reading in files :

        :r file2 - cursor가 위치한 다음 line에 file2를 삽입

* Editing between files : (not needed for SUN system users)

        :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 */

* 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, cursor는 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)
example :      setenv EXINIT 'set ai wm=8 ts=4|map F W|map @ :w^M:e#^M'

Creative Commons License
Posted by BLUEDAY™