본문 바로가기

심오한 세상/etc

vi 사용법


1. command mode

이 중에서 가장 먼저 vi를 시작하면 command mode로 시작이 되는데, 이 상태에서는 여러가지 명령을 할 수 있다. 명령어를 나열하면 다음과 같다.

  • cursor movement

    h : prompt를 좌측으로 한 칸 움직인다. 물론 아무런 내용이 없는 상태에서 는 prompt는 움직이지 않게 된다. ^^

    j : prompt를 한 행 아래로 내린다. 물론 다음 행에 아무런 내용이 없다면 움직이지 않게 된다.

    k : prompt를 한 행 위로 올린다.

    l : prompt를 우측으로 한 칸 움직인다.

    0 : 현재 prompt가 있는 행의 가장 처음으로 간다.

    $ : 현재 prompt사 있는 행의 가장 마지막으로 간다.

    G : 마지막 줄로 이동

    nG: n번째 줄로 이동

    b : 앞의 단어나 구두점까지 이동

    B : 구두점 무시하고 앞의 단어까지 이동

    ^f : 한 page 다음으로 넘긴다.

    ^b : 한 page 전으로 넘긴다.

    ^l : refresh ; 화면을 깨끗히 보고 싶을 때, 다시 화면을 정돈해서 보여준다.

    ( 여기 까지가 대충 커서를 움직이는 명령들입니다.)

  • insert command

    a : append ; 즉, 현재 prompt가 있는 곳의 다음에 덧붙이는 명령이다. 이 명령은 edit mode로 전환된다. (즉, 글을 편집할 수 있다.)

    i : insert ; 즉, 현재 prompt가 있는 곳부터 삽입하는 것이다. 이 역시 edit mode로 전환된다.

    o : open line ; 즉, 새로운 행을 여는 개행 명령이다. 현재 prompt가 있는 위치에서 바로 다음 행을 열고 edit mode로 바꿔 준다.

    O : 커서 윗줄로 이동하고 삽입 상태

    s : substitute ; 즉, 현재 prompt가 있는 위치에 문자와 교환한다. edit mode로 바꿔 준다.

    r : 한 문자를 바꿈

    R : 문자열을 지우고 그자리에 다시 씀

    cw : ? ; 위의 substitute에서 한 단어를 substitute하는 명령이다. 즉, 현재 prompt의 위치부터 한 단어를 교환할 수 있도록 한다. 이 역시 edit mode로 바꿔 준다.

    (여기까지를 보면 vi에서 edit mode로 갈 수 있는 기본 명령임을 알 수 있다.)

  • delete & etc.

    x : ? ^^; ; 한 char를 지우는 것이다. delete명령이라고 할 수 있다.

    dd : delete ; 한 line을 삭제하는 것이다. 위의 x 명령이 한 char임에 반해서 한 줄을 지운다.

    D : 커서가 위치하고 있는 행부터 마지막 행까지 지움.

    Y : yank ; yank는 당기다는 뜻인데, 잡아두는 것이다. 즉 copy해서 버퍼에 기억하고 있다. ( 나중에 paste하는데 사용할 수 있다.)

    p : paste ; 붙이는 것인데 buffer에 있는 내용을 현재 prompt가 있는 위치의 다음에 append하거나(buffer의 내용이 한 행의 일부분일 때) 또는 다음 행 에 붙인다.(buffer의 내용이 한 행 또는 그 이상일 때)

    p : Change buffer에 저장되어 있는 것을 아랫줄에 삽입

    J : 현재 커서가 위치한 줄과 다음줄을 연결

    # : 여기서 #은 실제 자판의 '#'이 아니고 숫자를 말한다. 이는 명령의 반복 회수를 나타낸다. 예를 들면 다음과 같다.

    5dd : 5행을 지운다.
    5x : 5개의 char를 지운다.
    3Y : 3행을 buffer에 저장한다.

2. edit mode

이 모드는 command mode에서 들어 와서는 txt를 편집할 수 있다. esc를 하면 이 모드를 빠져나올 수 있다. 나오면 command모드 이다.

3. last line command mode

command mode에서 last line command mode로 변경하려면 : 를 입력.

ZZ : file이 변경된 경우에는 변경된 내용을 저장한 후 종료하고 변경사항이 없을 경우 그냥 종료

w : 변경된 내용을 기록

w! : 쓰기가 금지된 경우 강제로 저장

w filename : buffer의 내용을 모두 file에 저장

e! : 수정한 것과 관계없이 다시 edit상태로 돌아감

q : 종료

q! : 저장을 묻지도 않고 그냥 종료

# : #th 행으로 prompt를 이동

4. extra skill

last line command에서 할 수 있는 몇 가지 명령들

  1. substitute
    예)

    :1,$s/acasia/영이/g

    위의 명령은 첫 번째 줄부터 마지막 줄까지 acasia를 '영이'로 바꾸는 것이다.

    s가 substitute 명령이구 g는 globally의 의미로 모든 acasia를 바꾸라는 의미 이다.

  2. delete
    예):.,$d

    현재 줄 부터 해서 마지막까지 지우라는 의미

    d가 delete 의 의미이다. .은 현재 줄의 의미

  3. undo
    예):u

    실행 취소

5. search

/[검색어] : /를 하면 마지막 line으로 가고 그 상태에서 검색어를 치면 원하는 검색어의 위치로 prompt가 바뀐다.

6. shell command

![command] : !을 하면 마지막 line으로 가고 그 상태에서 shell 명령을 하면 명령이 실행된다.