[vim] vim 유용한 단축키 정리 Reference

Goal

  • vim의 단축키 사용법에 대해 이해한다.
    • 이동
    • 편집 (삽입, 삭제, 수정, 복사, 붙여넣기 등)
    • 선택
    • 검색
    • 기타 (매크로, 이어 붙이기, 취소하기/되돌리기 및 들여쓰기/내어쓰기, 대소문자 전환, 숫자 증감, 창 열기/탭 이동 등 )

이동

기본 이동

  • h, j, k, l: 좌,하,상,우 커서 이동
  • -: 줄의 처음 위치로 커서 이동
  • gg: 맨 위로 커서 이동
  • [shift + g]: 맨 아래로 커서 이동

단어 단위로 이동

  • w: 단어의 시작 위치로 커서 이동 (forward 방향)
    • Ex. 3w: 세 단어 앞으로 커서 이동
  • e: 단어의 마지막 위치로 커서 이동 (forward 방향)
  • b: 단어의 시작 위치로 커서 이동 (backward 방향)
  • ge: 단어의 마지막 위치로 커서 이동 (backward 방향)

한 문장 내에서의 이동

  • 0(숫자): 라인 맨 앞으로 커서 이동
  • ^: 문장 맨 앞으로 커서 이동
  • $: 문장 맨 뒤로 커서 이동

대략적인 위치로 이동 (현재 보이는 페이지 기준)

  • [shift + h]: 현재 보이는 페이지를 기준으로 맨 위로 커서 이동
  • [shift + m]: 현재 보이는 페이지를 기준으로 중간 라인으로 커서 이동
  • [shift + l]: 현재 보이는 페이지를 기준으로 맨 아래로 커서 이동

페이지 이동

  • [ctrl+ f]: 다음 페이지의 첫 줄로 커서 이동
  • [ctrl+ b]: 다음 페이지의 마지막 줄로 커서 이동
  • [ctrl+ d]: 페이지의 절반 크기만큼 아래로 커서 이동
  • [ctrl+ u]: 페이지의 절반 크기만큼 위로 커서 이동

원하는 줄 번호로 한 번에 이동

  • 줄 번호 설정 및 해지
    • [: + set number]: 줄 번호 설정
    • [: + set nonumber]: 줄 번호 설정
  • 방법1
    1. [esc] 를 눌러 표준 모드로 진입
    2. [:] 를 누른 후 원하는 [줄 번호] 입력
  • 방법2
    1. [esc] 를 눌러 표준 모드로 진입
    2. 원하는 [줄 번호] 입력
    3. [shift + g] 입력

{}(컬리 블레이스, Curly Brace) 을 기준으로 이동

  • ]]: {로 커서 이동 (forward 방향)
    • 없으면 페이지의 맨 아래로 커서 이동
    • {은 가장 상위의 블록을 감싸고 있는 문자만 찾는다.
  • [[: {로 커서 이동 (backward 방향)
  • ][: }로 커서 이동 (forward 방향)
    • 없으면 페이지의 맨 위로 커서 이동
    • }은 가장 상위의 블록을 감싸고 있는 문자만 찾는다.
  • []: }로 커서 이동 (backward 방향)
  • %: {}()에서 현재 괄호의 짝으로 커서 이동

편집

삽입 관련 단축키 (입력 가능한 상태로 변경)

  • i: 현재 커서가 위치한 문자의 앞에 Insert 하기
  • I: 현재 커서가 위치한 줄 맨 앞에 Insert 하기

  • a: 현재 커서가 위치한 문자의 뒤에 Insert 하기
  • A: 현재 커서가 위치한 줄 맨 뒤에 Insert 하기

  • O: 현재 커서가 위치한 줄 바로 윗줄에 Insert 하기
  • o: 현재 커서가 위치한 줄 바로 아랫줄에 Insert 하기

삭제/잘라내기 및 수정 관련 단축키

  • dd: 커서가 위치한 줄 잘라내기
  • dw: 커서가 위치한 곳부터 단어의 마지막까지 잘라내기
    • Ex. 숫자 + dd: 커서가 위치한 줄부터 숫자에 해당하는 수만큼의 줄 잘라내기
  • [shift + d]: 현재 커서의 위치부터 줄의 끝까지 잘라내기

  • x: 커서가 위치한 문자 잘라내기
  • [shift + x]: 커서가 위치한 문자 바로 앞에 있는 문자 잘라내기

  • s: 커서가 위치한 문자 잘라내고 Insert 하기
  • cc 또는 [shift + s]: 커서가 위치한 줄 전체 잘라내고 Insert 하기
  • cw: 커서가 위치한 곳부터 단어의 마지막까지 잘라내고 Insert 하기
  • [shift + c]: 현재 커서의 위치부터 줄의 끝까지 잘라내고 Insert 하기

  • [r + 변경할 문자]: 커서가 위치한 문자 하나 수정하기
    • Ex. 4rx: 현재 커서 이후 4개의 글자를 “x”로 수정한다.

복사/붙여넣기 관련 단축키

  • yl: 현재 커서가 위치한 문자 하나만 복사하기
    • Ex. 3yl: 현재 커서 이후 3개의 문자를 복사한다.
  • yy: 현재 커서가 위치한 줄 복사하기
  • yw: 현재 커서의 위치부터 단어가 끝나는 위치까지 복사하기
  • y: 블럭 단위로 체크한 내용(비주얼 모드 이용) 복사하기 - 한 문자만 복사 X
    • Ex. 숫자 + y: 커서가 위치한 줄부터 숫자에 해당하는 수만큼의 줄 복사하기
    • Ex. y$: 커서가 위치한 곳부터 줄의 마지막까지 복사하기
  • p:
    • 단어 복사: 현재 커서가 위치한 바로 다음 위치에 붙여넣기
    • 행 복사: 현재 커서가 위치한 줄 바로 아랫줄에 붙여넣기
  • [shift + p]:
    • 단어 복사: 현재 커서가 위치한 바로 앞 위치에 붙여넣기
    • 행 복사: 현재 커서가 위치한 줄 바로 윗줄에 붙여넣기
  • 숫자 + p: 해당 숫자 만큼 붙여넣기를 반복하기

선택

한 줄 선택

  • [shift + v]: 라인 단위로 블럭지정이 가능하다.

단어 단위로 여러 줄 선택

  1. [esc] 를 눌러 표준 모드로 진입
  2. v 를 눌러 여러 줄을 선택할 수 있는 상태를 만든다.
    • v: 단어 단위
    • [shift + v]: 라인 단위

멀티 포커스

  • [ctrl + v]: 블럭 단위로 여러 줄 선택. 즉, 사각형의 블럭지정이 가능하다.

검색

  • / + 찾을 단어 + Enter: 문서에서 단어 찾기
    • n 또는 *: 다음 찾기 (forward 방향)
    • N 또는 #: 이전 찾기 (backward 방향)

기타

매크로

추가 예정

다음 줄을 현재 커서가 있는 줄의 끝으로 이어 붙이기

  • [shift + j]: 다음 줄을 현재 커서가 있는 줄의 끝으로 이어 붙인다.

취소하기/되돌리기 및 들여쓰기/내어쓰기

  • u: Undo, 이전으로 취소하기
  • [ctrl + r]: Redo, 취소한 것을 다시 되돌리기
  • > 2번 클릭: 들여쓰기
    • >}: 한 문단 전체를 들여쓰기
    • Ex. 2»: 2번 들여쓰기
  • < 2번 클릭: 내어쓰기
  • .: - 이전 명령어를 다시 실행

대소문자 전환

  • [shift + ~]: 현재 커서가 위치한 문자의 대소문자를 변경한다.

숫자 증감

  • [ctrl + a]: 현재 커서가 위치한 하나의 문자가 숫자라면 해당 명령어로 숫자를 증가시킬 수 있다.
  • [ctrl + x]: 현재 커서가 위치한 하나의 문자가 숫자라면 해당 명령어로 숫자를 감소시킬 수 있다.

창 열기/탭 이동 등

  • [: + vs]: 현재의 창을 세로로 분할된 창으로 하나 더 열기
  • [: + new]: 새 창을 현재의 창 아래(세로로)에 분할된 창으로 열기
  • [: + tabnew]: 새 창을 현재의 창과 같은 위치에 열기
  • [ctrl + w] 2번 클릭: 분할 창 간에 이동

  • [gt]: 오른쪽 탭으로 이동
  • [gT]: 왼쪽 탭으로 이동

코드 형식 관련

  • zc: 코드 접기 (fold)
  • zM: 코드 모두 접기 (fold)

  • zo: 접힌 코드 펼치기
  • zR: 접힌 코드 모두 펼치기

  • zd: fold 지우기
  • zD: 모든 fold 지우기

Reference