[vi/vim] vi command

강버섯·2022년 1월 25일
0

ETC

목록 보기
6/12

👉 vi/vim 시작하기

터미널 창에서 vi <파일명> 을 입력하면 vi 편집기로 파일을 열 수 있다.
만일 파일이 존재한다면 존재하는 파일이 열리고, 존재하지 않는다면 파일이 생성되여 열린다.

vi <디렉토리명> 을 입력하면 디렉토리 리스트가 열리고,

  1. 디렉토리 선택 -> 디렉토리로 이동
  2. 파일 선택 -> 파일 편집기 사용

의 작업을 할 수 있다.

👉 vi/vim mode

vi에는 3가지 모드가 존재한다.

✏️ visual mode

vi 편집기를 처음 켰을 때 혹은 ESC 키를 눌렀을 때 전환되는 모드이다.
커서의 이동이 가능하며 insert key(i, a, I, A 등등)을 통해 edit mode, :를 통해 ex mode로의 전환이 가능하다.

✏️ edit mode

visual mode에서 insert key를 통해 전환할 수 있다.
파일의 편집을 할 수 있는 모드로, 키보드로 입력하는 값이 그대로 입력된다.
ESC 키를 통해 다시 visual mode로 전환할 수 있다.

✏️ ex mode

visual mode에서 : 를 사용하여 전환할 수 있으며 편집기의 가장 하단 라인에 표시된다.
ex mode는 파일의 저장, 종료 등을 수행할 수 있다.

👉 vi/vim command

👉 visual mode command

ESC 키를 눌러 visual mode로 전환한 상태에서 입력하면 동작한다.

✏️ change

  • c
    d key와 동일하게 선택한 곳의 글자들을 삭제하지만, 삭제 후 edit mode로 전환된다.

✏️ delete

  • x
    현재 커서가 위치한 곳의 글자가 삭제된다.
  • d
    d key를 누른 후 command(motion)를 입력하면 해당 command에 부합하는 부분의 글자가 삭제된다.
    d<motion> 으로 삭제된 값은 버퍼에 보관된다.
  • dd
    한 라인이 전부 삭제된다.
    <n>dd로 실행시키면 n개의 라인이 모두 삭제된다.

✏️ copy

  • y
    선택한 범위의 값을 복사한다.
    y<motion>을 통해 범위 선택을 하여 복사할 수 있다.
    -yy
    현재 위치한 라인의 값이 전부 복사한다.

✏️ paste

delete 혹은 yank(copy)를 통해 버퍼에 보관된 값을 붙어넣기 할 수 있다.

  • p
    현재 커서 위치 뒤쪽으로 값을 붙여넣는다.
  • P
    현재 커서 위치 앞쪽으로 값을 붙여넣는다.

✏️ cursor move

  • h j k l
    순서대로 왼쪽 / 아래 / 위 / 오른쪽으로 커서를 이동시킬 수 있다.
    해당 key가 아닌 화살표를 이용해서도 동일한 동작을 수행할 수 있다.
  • gg
    파일의 가장 처음으로 커서를 이동시킨다.
  • G
    파일의 가장 마지막 라인 첫번째 위치로 커서를 이동시킨다.
    <n>G로 실행시키면 파일의 n번째 라인 첫번째 위치로 커서가 이동된다.

한 라인에서의 이동을 수행하는 명령어는 다음과 같다.

  • 0
    라인의 처음으로 커서가 이동된다.
  • $
    라인의 마지막으로 커서가 이동된다.
  • t<char>
    char로 입력한 값 바로 직전으로 커서가 이동된다.
    ex. ts 수행 시 👇
  • f<char>
    char로 입력한 값으로 커서가 이동된다.
    ex. fs 수행 시 👇
  • w
    커서가 단어 단위 오른쪽 이동을 한다.
  • W
    커서가 스페이스 기준 단위 오른쪽 이동을 한다.
  • b
    커서가 단어 단위 왼쪽 이동을 한다.
  • B
    커서가 스페이스 기준 단위 왼쪽 이동을 한다.

커서 이동 command는 d(delete), c(change), y(yank) command와 같이 사용하면 편하다.

d0 d$ dt<char> df<char>
c0 c$ ct<char> cf<char>
y0 y$ yt<char> yf<char>

✏️ append / insert

  • a
    현재 커서의 다음 위치에서 삽입이 시작된다.
  • A
    현재 라인의 맨 뒤에서 삽입이 시작된다.
  • i
    현재 커서의 위치에서 삽입이 시작된다.
  • I
    현재 커서의 맨 앞에서 삽입이 시작된다.
  • o
    현재 커서의 아래 라인에 새로운 라인이 생성되고 삽입이 시작된다.

✏️ visual

  • v
    현재 커서 위치에서부터 글자 단위로 visual block을 생성한다.
  • V
    현재 커서가 위치한 라인에서부터 라인 단위로 visual block을 생성한다.
  • ^(cntl)v
    visual block을 생성하고 I, A를 이용하여 한 번에 값을 입력할 수 있다.
    - ^v + I<input> ESC : 현재 커서의 위치에 입력한 값을 선택한 visual block에 모두 작성한다.

    - ^v + A<input> ESC : 현재 커서의 위치 다음에 입력한 값을 선택한 visual block에 모두 작성한다.
  • gv
    마지막 블록 설정을 불러올 수 있다.

✏️ undo / redo

  • u
    명령어 수행 이전 상태로 되돌린다.
  • .
    직전에 수행한 명령어를 재수행한다.

👉 ex mode command

visual mode에서 :를 누른 뒤 명령어를 입력한다.

  • :w
    파일의 수정 사항을 저장한다.
    w 뒤에 파일명을 입력하면 해당 파일명으로 저장된다.
  • :wq
    파일의 수정 사항을 저장하고 vi를 종료한다.
  • :wq!
    파일의 수정 사항을 저장하고 vi를 강제 종료한다.
  • :q
    vi를 종료한다.
  • :q!
    vi를 강제 종료한다.
  • /<char>
    입력한 검색 값을 파일에서 찾는다.
  • set <command>
    vi 편집기의 설정을 관리한다.
    - set nu(number)
    vi 편집기에 라인 번호를 표시한다.
    - set nonu(number)
    vi 편집기에 표시된 라인 번호를 제거한다.

정규 표현식과 command을 조합하여서 사용할 수도 있다.

  • :g
    global에서 정규 표현식에 맞는 값을 찾는다.
  • :s
    정규 표현식에 맞는 패턴을 입력한 값으로 대치한다.

👉 추가적인 command들 확인

profile
무럭무럭 버섯농장

0개의 댓글