[etc] vim

Published: by Creative Commons Licence

참고

vim docs

vim 명령어

기본인 명령모드와 명령어를 입력할 수 있는 입력모드를 오가면서 원하는 기능을 처리할 수 있다. 명령모드와 입려모드는 커서의 모양이 다름으로 구분할 수 있다.

입력모드

  • esc 명령모드로 변경
  • i 입력모드로 변경, insert의 약자로 커서 앞에 추가된다.
  • a 입력모드로 변경, append의 약자로 커서 뒤에 추가된다.
  • I 입력모드로 변경, 문장시작에서 입력
  • A 입력모드로 변경, 문장 끝에서 입력

  • :q 종료, quit
  • :q! 저장없이 강제종료
  • :w 저장, write
  • :w! 강제저장
  • :wq 저장하고 종료
  • :wq! 강제 저장하고 종료

네비게이션

명령모드 상태에서 사용한다.

  • h 왼쪽으로 이동
  • j 아래
  • k
  • l 오른쪽

  • 0 문장 앞으로 이동
  • $ 문장 뒤로 이동
  • w 앞으로 한 단어씩 이동, word
  • b 뒤로 한 단어씩 이동, backward
  • n + w n(숫자)만큼 단어 앞으로 이동, n에 원하는 숫자를 넣으면 된다.
  • n + b n(숫자)만큼 단어 뒤로 이동, n에 원하는 숫자를 넣으면 된다.

  • H 화면 위, 파일(페이지)의 상단이 아님 주의
  • M 화면 중간
  • L 화면 끝
  • gg 파일(페이지) 맨 앞
  • G 파일(페이지) 끝
  • n + G n(숫자)번째 줄로 이동

  • ctrl + u 위로 스크롤링
  • ctrl + d 아래로 스크롤링
  • { 문단 단위로 문단시작을 찾는다.
  • } 문단 단위로 문단 끝을 찾는다.

명령모드

명령모드 상태에서 사용한다.

  • x 커서에 위치한 글자 삭제, 키보드 del키와 같은 기능
  • dd 문장 삭제
  • yy 문장 복사
  • p 붙여넣기
  • *p 클립모드 붙여넣기
    • vscode에서 위 모드를 이용하기 위해서는 setting.json에 아래 프로퍼티 추가 필요
    • "vim.useSystemClipboard": true

명령어 + 객체 조합

명령모드 상태에서 사용한다.

command + object

대표 명령어

**d** (delte = cut) **y** (yank = copy) **c** (change)

아래는 사용예시

d + 3w // delete 3 words 앞으로 3단어 삭제
d + 3b // delete 3 backward 뒤로 3단어 삭제
d + aw // delete a word 단어 하나 삭제
d + as // delete a sentence  한 줄 삭제
d + at // delete a tag 태그 전체 삭제
d + ap // delete a paragraph 문단 전체 삭제
d + it // delete inner tags 태그 안의 내용만 삭제
d + i" // delete inner " 쌍따옴표 안의 내용만 삭제
d + ip // delete inner paragraph 문단 안의 내용만 삭제

d + 2j // delete below 2 lines 방향키 j는 아래를 의미하므로 아래 2줄 삭제
d + 3k // delete up 3 lines 방향키 k를 위를 의미하므로 위 3줄 삭제
d + i{ // {} 사이의 내용 삭제
d + a{ // {} 포함하여 내용과 삭제

c + i{ // {} 사이의 내용을 삭제하고 바로 입력모드로 전환이 되므로 추가내용을 넣을 수 있다. 
daw + p // 한 단어 지우고(사실은 잘라내기) 다른 곳으로 이동 후 붙여넣기

추가 예시

const [show, setShow] = useState(shouldShow);
             // s 커서위치 
`d + f(` // 커서위치부터 `(` 포함해서 삭제

결과: const [show, shouldShow);
`d + t(` // 커서위치부터 `(` 전까지 삭제

결과: const [show, (shouldShow);
`d + / + use` // 커서위치부터 찾을 키워드 use를 입력 후 엔터 클릭하면 키워드 앞까지 삭제된다.
결과: const [show, useState(shouldShow);

반복 수행

명령모드 상태에서 사용한다.

  • . 이전 명령 반복
  • u 되돌리기 undo
  • ctrl + R 다시실행 redo

검색, 찾기

  • / 슬래시 후 검색어를 입력하고 엔터를 치면 해당 단어가 하이라이트됨
  • n 검색어 결과가 여러 개일 때 다음 검색어를 찾는다.
  • N 검색어 결과가 여러 개일 때 앞의 검색어를 찾는다.
  • ? + n 검색어를 찾아 하이라이트 하되 아래에서부터 위로 검색어를 찾는다. 슬래시와 같지만 방향만 달라진다. / + N 과 동일 기능

선택

  • v + 방향키 커서위치부터 방향에 따라 선택이 가능하다.
  • v + aw 한 단어 선택
  • ctrl + v 멀티커서