0. 개요
Learn Vim Progressively라는 Article을 보고 내용이 괜찮아 정리하며 일부 필요한 내용은 추가하였다.
VIM 단축키 및 기능을 익히는 과정인데 Cheat Sheet류 대비해서의 장점은 Level별로 분리해 두어 Step-By-Step으로 학습할수 있다는 점 같다.
이정도만 익혀두어도 VIM으로 개발하는데 필요한 것 기능은 다 익히는듯 하다.
1. 중급자 이상이 볼만한 것
이미 VI에 익숙하신 분들은 아래 정도 기능 혹시 쓰고있는지 보고 쓰시면 좋을듯 하다.
u
: undoCtrl
+r
: redo0y$
: 문장시작 부터 끝까지 복사gU
: upper casegu
: lower casef문자열
: 특정문자열까지 이동, 응용으로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 붙여넣기- 코드 복사 이후 밑에서 다시
x
나dw
로 일부 삭제 후 Paste시 유용
2. 레벨#1, 서바이벌
2-1. 모드 설명
Vim은 i
를 눌러 Insert Mode
에 들어가거나 ESC
를 눌러 Normal Mode
로 전환할 수 있음
i
: Insert modeESC
: 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 linep
: 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 cursoro
: insert a new line after the current oneO
: insert a new line before the current onecw
: 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 lineg_
: 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
: undoCtrl
+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 lines3p
: will paste the text 3 times100idesu [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 Ngg
: shortcut for 1G – go to the start of the fileG
: 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
For example : 0y$ means(문장 처음부터 끝까지 복사)
0
: go to the beginning of this liney
: yank from here$
: up to the end of this linegU
,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 columng_
: go to the last character on the linefa
: 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
andT
: 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: .
^
: go to the first non-blank character of the lineCtrl
+v
: Start block selectionCtrl
+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