What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

Vim에 대하여

  • Vim이란
  • 사용법
  • 단축키
  • 유용한 사이트


Vim이란

vim-emacs-nano

Vim(vi improved)은

AT&A라는 회사가 개발했던 vi라는 오픈 소스 문서 편집기를 복제한

라이선스 없이 사용 가능한 문서 편집기

  • 키 조작을 단순화하고, 함수형 명령어를 조합하여 타수가 감소
  • 모든 유닉스나 리눅스 시스템에도 기본적으로 설치되어 강력 호환
  • 익숙해지기까지 시간이 걸리지만 숙달되는 만큼 문서 편집 효율 급상승


사용법

주로 3가지 모드가 있다.

vim-mode

일반 모드

화살표 이동이나 특정 문자 수정/삭제 및 편집

입력 모드

텍스트 입력이 가능

  • i (현 커서 위치에서 입력모드)
  • a (현 커서 한 칸 뒤에서 입력모드)
  • o (한 줄 추가 후 입력모드)

명령 모드

시스템과 관련된 부분을 담당

  • ** : (콜론을 누르면 명령모드)
    • 다음 명령을 사용 가능
    • 뒤에 느낌표를 붙이면 강제 명령으로 실행
    • 입력한 명령어는 하단 버퍼에 출력
  • w (파일 저장)
  • q (vim 종료)
    • 파일을 변경하고 저장하지 않은 채 이 명령어를 사용하면 종료되지 않고, 이때 강제 종료를 원하면 !를 붙여 q! 입력
  • qa (여러 개를 동시에 닫기)
    • 여러 개를 저장하지 않고 동시에 강제종료 하려면 qa!
    • 다 저장하고 종료하겠다면 wqa
  • wq (파일을 저장하고 vi를 종료)


단축키

vim-shortkey-keyboard

기본 이동

  • 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번 클릭 : 내어쓰기
  • . : - 이전 명령어를 다시 실행

대소문자 전환

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

숫자 증감

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

창 열기/탭 이동 등

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

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

코드 형식 관련

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

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

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


유용한 사이트

  • Vim Adventures : 게임 형식으로 Vim 학습
  • OpenVim : 주요 기능들을 쉽게 가이드해주는 웹 튜토리얼
  • VimGenius : 퀴즈 형식으로 Vim을 연습할 수 있는 사이트


태그:

카테고리:

업데이트:

댓글남기기