본문 바로가기

linux

[스크랩]리눅스 vi 편집기 명령어

vi 에도 이동, 삭제, 수정 등의 키가 여러종류로 나눠져 있숩니다.

 

vi 편집기 명령
vi 편집기에서는 커서이동모드와 텍스트 모드 명령모드가 있습니다.

  • 입력키의 종류 (커서 이동모드 에서 텍스트 모드로 전환할때 사용)
    a  -  커서 위치의 다음 칸부터 입력하기
    A  -  커서가 있는 줄의 끝부터 입력하기
    i  -  커서 위치부터 입력하기 (키보드의 insert도 같은 기능)
    I  -  커서가 있는 줄의 맨 앞에서부터 입력하기
    o  -  커서 바로 아래에 줄을 만들고 입력하기 (open line)
    O  -  커서 바로 위에 줄을 만들고 입력하기
    s  -  커서가 있는 단어를 지우고 입력하기
    S  -  커서가 있는 행을 지우고 입력하기

○ 커서이동 모드에서는

  • 글자단위이동
    h  -  한 칸 왼쪽으로 이동하기
    l  -  한 칸 오른쪽으로 이동하기
    j  -  한 줄 아래로 이동하기
    k  -  한 줄 위로 이동하기
  • 단어단위이동
    w  -  다음 단어의 첫 글자로 이동
    W  -  다음 단어의 첫 글자로 이동하기
    b  -  이전 단어의 첫 글자로 이동
    B  -  이전 단어의 첫 글자로 이동하기
    e  -  단어의 마지막 글자로 이동
    E  -  단어의 마지막 글자로 이동하기
    (이동과 이동하기의 차이점은 해보면 약간있는데 별차이 없는듯)
  • 줄단위이동
    ^  -  그 줄의 첫 글자로 이동, shift와 함께 사용
    $  -  그 줄의 마지막 글자로 이동하기, shift와 함께 사용
    0  -  그 줄의 처음으로 이동
    enter -  다음 줄의 첫 글자로 이동하기
    +  -  다음 줄의 첫 글자로 이동
    -  -  윗줄의 첫 글자로 이동하기
  • 삭제 키의 종류
    x  -  dl 커서 위치의 글자 삭제
    X  -  dh 커서 바로 앞의 글자 삭제
    dw -  한 단어를 삭제
    d0 -  커서 위치부터 줄의 처음까지 삭제
    D  -  d$ 커서 위치부터 줄의 끝까지 삭제
    dd -  커서가 있는 줄을 삭제
    dj -  커서가 있는 줄과 그 다음 줄을 삭제
    dk -  커서가 있는 줄과 그 앞줄을 삭제
  • 수정 키의 종류
    r  -  커서 위치의 한 글자 수정하기
    R  -  커서 위치부터 esc를 누를 때까지 다른 글자로 수정하기. 단, 같은 줄에만 해당
    s  -  커서 위치의 한 글자를 여러 글자로 수정하기
    ch -  커서 바로 앞의 한 글자를 여러 글자로 수정하기
    cw -  커서 위치의 한 단어를 수정하기
    c0 -  커서 위치부터 줄의 처음까지 수정하기
    C  -  커서 위치부터 줄의 끝까지 수정하기
    cc -  커서가 있는 줄을 수정하기
    cj -  커서가 있는 줄과 그 다음 줄을 수정하기
    ck -  커서가 있는 줄과 그 앞줄을 수정하기
  • 복사와 붙여넣기
    yw  -  커서 위치부터 단어의 끝까지 복사하기
    y0  -  커서 위치부터 줄의 처음까지 복사하기
    y$  -  커서 위치부터 줄의 끝까지 복사하기
    yy  -  커서가 있는 줄을 복사하기
    yj  -  커서가 있는 줄과 그 다음 줄을 복사하기
    yk  -  커서가 있는 줄과 그 앞줄을 복사하기
    p   -  커서의 다음 위치에 붙여넣기
    P   -  커서가 있는 위치에 붙여넣기
  • 작업취소명령
    u  -  작업 취소하기(undo)
    U  -  그 줄에 행해진 작업 모두 취소하기
    .   -  조금 전에 했던 명령을 반복하기

○ 저장 및 종료키의 종류 ( 커서이동모드에서 명령모드로)

:q   -  아무런 변경을 하지 않았을 때 종료하기
:q!  -  변경된 내용을 저장하지 않고 강제 종료하기
:wq  -  저장하고 종료하기(write and quit)
:x   -  wq와 같은 기능

행번호 보기
:set number  -  행번호 보기( = :se nu)
:set nonumber - 행번호 보기 해제( = :se nonu)