0. 개요

Learn Vim Progressively라는 Article을 보고 내용이 괜찮아 정리하며 일부 필요한 내용은 추가하였다.

VIM 단축키 및 기능을 익히는 과정인데 Cheat Sheet류 대비해서의 장점은 Level별로 분리해 두어 Step-By-Step으로 학습할수 있다는 점 같다.

이정도만 익혀두어도 VIM으로 개발하는데 필요한 것 기능은 다 익히는듯 하다.

1. 중급자 이상이 볼만한 것

이미 VI에 익숙하신 분들은 아래 정도 기능 혹시 쓰고있는지 보고 쓰시면 좋을듯 하다.

  • u : undo
  • Ctrl + r : redo
  • 0y$ : 문장시작 부터 끝까지 복사
  • gU : upper case
  • gu : lower case
  • f문자열 : 특정문자열까지 이동, 응용으로 vf)를 하면 함수 파라미터만 선택 가능
  • t문자열 : 특정문자열 앞까지 이동, 위의 응용과 동일하게 사용가능
  • ctrl + n : 단어 자동완성
  • 0<C-v><C-d>I-- [ESC] : 간지나게 여러줄 주석처리
  • visual selection + J : 라인 합치기
  • visual selection + < or > : Indentation
  • visual selection + = : Auto Indentation
  • ctrl + v -> $ -> A -> 타이핑 후 ESC : 여러줄의 맨 뒷줄에 같은내용 타이핑
  • zone selection

    • vi" : will select foo.
    • va" : will select “foo”.
    • vi) : will select “foo”.
    • va) : will select (“foo”).
    • v2i) : will select map (+) (“foo”)
    • v2a) : will select (map (+) (“foo”))
  • 멀티 클립보드

    • "ayy로 문장 1 복사, "byy로 문장 2 복사
    • "ap로 문장 1 붙여넣기, "ap로 문장 2 붙여넣기
    • 코드 복사 이후 밑에서 다시 xdw로 일부 삭제 후 Paste시 유용

2. 레벨#1, 서바이벌

2-1. 모드 설명

Vim은 i를 눌러 Insert Mode에 들어가거나 ESC를 눌러 Normal Mode로 전환할 수 있음

  • i : Insert mode
  • ESC : Normal mode.

2-2. 간단한 명령

  • x : Delete the char under the cursor
  • :wq : Save and Quit (:w save, :q quit)
  • dd : Delete (and copy) the current line
  • p : Paste

2-3. 커서이동

  • hjkl : highly recommended but not mandatory
  • ←↓↑→ : basic cursor move

도움말은 아래와 같이 가능함.

2-4. help

  • :help <command> : Show help about . You can use :help without a to get general help.

3. 레벨#2, 익숙해지기

3-1. Insert Mode

  • a : insert after the cursor
  • o : insert a new line after the current one
  • O : insert a new line before the current one
  • cw : replace from the cursor to the end of the word
    

3-2. 커서 이동

  • 0 : go to the first column
  • ^ : go to the first non-blank character of the line
  • $ : go to the end of line
  • g_ : go to the last non-blank character of line

3-3. 문자열 검색/치환

  • /pattern : search for pattern
  • %s/이전문자열/바꿀문자열/c : replace

3-4. 복사/붙이기

  • P : paste before, remember p is paste after current position.
  • yy : copy the current line, easier but equivalent to ddP

3-5. Undo/Redo

  • u : undo
  • Ctrl + r : redo

3-6. Load/Save/Quit/Change File (Buffer)

  • :e <path/to/file> : open
  • :w : save
  • `:saveas <path/to/file>“ : save to <path/to/file>
  • :x, ZZ or :wq : save and quit (:x only save if necessary)
  • :q! : quit without saving, also: :qa! to quit even if there are modified hidden buffers.
  • :bn (resp. :bp) : show next (resp. previous) file (buffer)

4. 레벨#3, 더 강력하고 빠르게.

4-1. Better

  • . : (dot) will repeat the last command,
  • N<command> : will repeat the command N times.
  • 2dd : will delete 2 lines
  • 3p : will paste the text 3 times
  • 100idesu [ESC] : will write “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu”

4-2. Stronger

  • NG : Go to line N
  • gg : shortcut for 1G – go to the start of the file
  • G : Go to last line

4-3. Word moves

  • w : go to the start of the following word,
  • e : go to the end of this word.
  • W : go to the start of the following WORD,
  • E : go to the end of this WORD.

%, * 모두 유용함

  • % : Go to the corresponding (, {, [.
  • * : go to next (resp. previous) occurrence of the word under the cursor

4-4. Faster

> <start position><command><end position>

For example : 0y$ means(문장 처음부터 끝까지 복사)

  • 0 : go to the beginning of this line
  • y : yank from here
  • $ : up to the end of this line
  • gU, gu 유용함

4-5. 멀티 클립보드

  • "ayy로 문장 1 복사, "byy로 문장 2 복사
  • "ap로 문장 1 붙여넣기, "ap로 문장 2 붙여넣기

5. 레벨#4, 슈퍼파워

5-1. Move on current line

  • f문자열 유용함
  • 0 : go to column 0
  • ^ : go to first character on the line
  • $ : go to the last column
  • g_ : go to the last character on the line
  • fa : go to next occurrence of the letter a on the line. , (resp. 😉 will find the next (resp. previous) occurrence.
  • t, : go to just before the character ,.
  • 3fa : find the 3rd occurrence of a on this line.
  • F and T : like f and t but backward.

5-2. Zone selection

  • vi" : will select foo.
  • va" : will select “foo”.
  • vi) : will select “foo”.
  • va) : will select (“foo”).
  • v2i) : will select map (+) (“foo”)
  • v2a) : will select (map (+) (“foo”))

5-3. Select rectangular blocks: .

0<C-v><C-d>I-- [ESC]
  • ^ : go to the first non-blank character of the line
  • Ctrl + v : Start block selection
  • Ctrl + d : move down (could also be jjj or %, etc…)
  • I-- -> ESC : write — to comment each line

5-4. Completion: and .

  • ctrl + n 유용함

5-5. Macros

예제 : qaYp<C-a>q

  • qa : start recording.
  • Yp : duplicate this line.
  • Ctrl + a : increment the number.
  • q : stop recording.
  • @a : write 2 under the 1
  • @@ : write 3 under the 2

5-6. Visual selection

  • visual selection + J : 라인 합치기
  • visual selection + < or > : Indentation
  • visual selection + = : Auto Indentation
  • ctrl + v -> $ -> A -> 타이핑 후 ESC

5-7. Splits: :split and vsplit.

  • :split : create a split (:vsplit create a vertical split)
  • Ctrl + w -> 방향키 : where dir is any of hjkl or ←↓↑: to change the split.
  • Ctrl + w -> _ or | : maximise the size of the split (resp. vertical split)
  • Ctrl + w -> + or - : Grow (resp. shrink) split

6. 참고자료