기록

Vim 본문

TIL*

Vim

mnmhbbb 2023. 6. 15. 19:14

참조:

https://youtu.be/cY0JxzENBJg

 

 

 

Vim이란

Vim(빔, Vi IMproved)은 Bram Moolenaar가 만든 vi 호환 텍스트 편집기이다. CLI용 Vim과 GUI용 gVim이 있다. 본래 아미가 컴퓨터 용 프로그램이었으나 현재는 마이크로소프트 윈도우, 리눅스, 맥 오에스 텐을 비롯한 여러 환경을 지원한다.

Vim은 vi와 호환되면서도 독자적으로 다양한 기능을 추가하여 사용자의 편의를 돕고 있다. 특히 Vim 스크립트 등을 사용해서 자유롭게 편집 환경을 변경하거나, 확장된 정규 표현식 문법, 강력한 문법 강조 기능, 다중 되돌리기, 유니코드를 비롯한 다국어 지원, 문법 검사 등을 쓸 수 있다는 점이 강점으로 꼽힌다. 한편으로는 vi와 마찬가지로 처음에 배우기 어렵다는 점이 단점으로 지적되는데, 이를 극복하기 위해 쉬운 Vim 모드를 지원한다.

출처: 위키백과(https://ko.wikipedia.org/wiki/Vim)

 

vi란

vi(브이아이)는 Emacs와 함께 유닉스 환경에서 가장 많이 쓰이는 문서 편집기이다. 1976년에 빌 조이가 초기 BSD 릴리즈에 포함될 편집기로 만들었다. vi라는 이름은 한 줄씩 편집하는 줄단위 편집기가 아니라 한 화면을 편집하는 비주얼 에디터(visual editor)라는 뜻에서 유래했다. 간결하면서도 강력한 기능으로 사용자가 많다.

현재는 오리지널 vi를 사용하는 경우는 거의 없고, 일반적으로 기능을 모방하여 만들어진 클론을 사용하고 있다. 이런 클론 중 많이 쓰이는 것은 기능이 다양한 것을 장점으로 내세우며 리눅스 배포판에 포함되는 Vim 및 그의 리팩터판인 Neovim, 그리고 BSD 라이선스로 제공되며 원본 vi의 동작과 호환성으로 정평이 나 있는 nvi, 독자적인 팬층을 확보한 elvis 등이 있다.

출처: 위키백과(https://ko.wikipedia.org/wiki/Vi)

 

Vim의 장점

Vim의 장점은 마우스없이 키보드만으로 빠르게 타이핑할 수 있게 해 주는 것.
물론 타이핑 속도보단 생각의 속도(제대로된 구현 계획 등)가 더 중요하지만, 이 생각을 빠르게 표현할 수 있게 하는 것도 중요함!
Vim은 사람의 언어에 가까운, 표현력이 뛰어난 명령어를 가졌기 때문에 빠르게 표현할 수 있음
또한, 이 명령어들이 반복 가능하다는 강력한 장점을 갖고 있음

 

Vim 사용법

vim README.md

git commit --amend

vim 원하는 파일명
또는 다른 명령어 뒤에 --amend 를 붙이면 vim 에디터에서 작업을 수행할 수 있다.

 

vim에는 명령모드(기본값)/입력모드 2가지 모드가 있다.
명령모드는 커서가 더 뚱뚱하다!

1. 명령모드 -> 입력모드
i 키를 누름

더 다양한 방법
명령모드 -> 입력모드로 전환할 때, 현재 커서 위치와 입력 키보드에 따라 원하는 위치로 진입할 수 있다.

  • i
    insert, 커서 앞
  • a
    append, 커서 뒤
  • I
    문장 시작
  • A
    문장 끝

 

2. 입력모드 -> 명령모드
esc 키를 누름

그 다음 종료를 할 수 있는데, 콜론 다음에 명령어를 입력하면 원하는 동작으로 종료할 수 있다.

  • :q
    그냥 종료
  • :q!
    강제 종료
  • :w
    저장
  • :w!
    강제 저장
  • :wq
    저장하고 종료
  • :wq!
    강제 저장하고 종료

 

또한 VSCode와 같은 텍스트 에디터에 Vim 익스텐션을 설치해서 사용하는 경우도 많음

 

Vim 네비게이션 명령어 (명령모드에서의 네비게이션 명령어 모음)

방향키로 가능하지만, HJKL로 더 빠르게 이동할 수 있다

드림코딩 Vim 강의: 방향키

 

  • 0(숫자)
    문장 앞으로 이동
  • $(shift+4)
    문장 뒤로 이동
  • w
    word, 단어마다 앞으로 이동
  • b
    backword, 단어마다 뒤로 이동
  • nw
    n개 단어씩 앞으로 이동, ex. 3w = 3단어씩 앞으로 이동
  • nb
    n개 단어씩 뒤로 이동
  • H(대문자)
    화면상 위로 이동
  • M(대문자)
    화면 중앙
  • L(대문자)
    화면 끝
  • gg
    해당 파일의 최상단으로 이동
  • G(대문자)
    해당 파일의 최하단으로 이동
  • nG(대문자)
    n번째 줄로 이동, ex. 20G = 20번째 줄로 이동
  • ctrl u
    위로 스크롤링
  • ctrl d
    아래로 스크롤링
  • {
    문단 단위로 이동하며, 문단 시작
  • }
    문단 단위로 이동하며, 문단 끝

 

명령모드에서의 기본 명령어

  • x
    커서 뒤에 있는 글자 삭제
  • dd
    문장 삭제
  • yy
    문장 복사
  • p
    복사한 내용 붙여넣기
  • *p
    클립보드에서 복사한 내용 붙여넣기
    단, 이 경우는 외부 클립보드에 있는 텍스트를 붙여넣기 할 수 있도록 하는 권한 설정을 해야 함.
    VSCode의 경우 settings.json에서 "Vim.useSystemClipboard": true, 추가

 

 

 

Vim 명령어의 강력한 포인트

드림코딩 Vim 강의: Command + Object의 예시1

명령어 + 대상

드림코딩 Vim 강의: Command + Object의 예시2

 

드림코딩 Vim 강의: 대표적으로 쓰이는 Command + Object

  • it(inner tag)
  • i"(inner ")
  • ip(inner paragraph)

참고로, d는 cut(잘라내기)의 역할을 하기 때문에, 삭제한 단어를 다른 원하는 곳에 p 명령어를 이용하여 붙여넣기 할 수 있다.

  • ex. 현재 커서에 속하는 단어 하나를 통으로 삭제하고 싶다면, daw
  • ex2. 현재 커서부터 아래로 2줄을 삭제하고 싶다면, d2j(j가 화살표 아래 키의 역할을 함)
  • ex3. 중괄호 안에 있는 모든 글자를 삭제하고 싶다면, di{
  • ex4. 소괄호를 포함하여 소괄포 내부 글자까지 모두 삭제하고 싶다면, da(
  • ex5. 대괄호 내부 글자를 변경하고 싶다면, ci[ 하고 삭제된 대괄호 내부에 원하는 글자를 입력. 이때 c를 하면 자동으로 입력모드로 전환됨

 

 

명령 모드에서 반복 수행

또한 이 모든 것을 반복 가능하다는 점이다. 일일이 명령어를 입력하지 않아도 된다.

  • .
    이전 명령 반복
  • u
    undo, 되감기
  • ctrl R
    redo, 앞감기

 

특정한 위치를 찾아서 컨트롤 하기

드림코딩 Vim 강의: 특정한 위치를 찾아서 컨트롤 하기 예시 코드

  • 현재 커서부터 소괄호까지 삭제하고 싶다면, df(
  • 현재 커서부터 소괄호 이전까지만 삭제하고 싶다면, dt(
  • 현재 커서부터 특정 키워드 이전까지만 삭제하고 싶다면, d/use
    이 경우, VSCode 하단에서 검색 키워드를 확인할 수 있고, 현재 커서부터 use 이전까지 삭제됨

드림코딩 Vim 강의: / 명령어를 사용할 경우

 

검색하기

  • / 명령어를 입력하고 검색 키워드를 입력한다.
  • 다음을 선택하려면 n 입력

 

선택하기

v 명령어와 위에서 배운 명령어를 활용하여 원하는 영역을 선택할 수 있다.

  • ex. 현재 커서가 속하는 단어를 선택하고 싶다면, vaw
  • ex2. 현재 커서부터 위아래로 선택하고 싶다면, 화살표 

 

더 자세하게 vim에 대해 알고 싶다면, 터미널에서 vimtutor를 입력하여 vim에 대한 문서를 확인할 수 있다.

 

 

Comments