1장 Vim의 방식

점 명령을 이용해 간단한 수정 작업을 빠르게 처리한다.

Tip1. 정 명령 만나기

점 명령은 마지막 변경을 반복하는 기능을 수행한다.

G : 현재 행부터 문서 끝까지 들여쓰기를 추가하는 명령

vim은 끼워넣기 모드로 들어간 순간부터(예를 들어 i를 눌러서) 일반모드로 돌아오기까지(를 눌러서) 모든 입력을 기록한다.

Tip2. 반복하지 않기

각 행의 마지막에 세미콜론을 붙이는 일은 일상에서 흔히 겪을 만한 반복 작업중한다.

tip1의 점명령을 활용해서 처리한다.

반값할인
C c$ : 커서 위치부터 뒤를 삭제하고 insert 모드로 진입
s cl : 선택된 단어를 삭제하고 insert 모드로 진입 
S ^C : 커서위치 상관없이 모든 줄을 삭제하고 insert 모드로 진입 
I ^i : 커서위치 상관없이 제일 앞으로 이동후 insert 모드로 진입
A $a : 커서위치 상관없이 제일 뒤로 이동후 insert 모드로 진입
o A<CR> : 아래 새로운 라인을 만들고 insert 모드로 진입
o ko :  위에 새로운 라인을 만들고  insert 모드로 진입

Tip3. 한걸음 물러나고 세걸음 나아가기

문자 앞뒤로 공백 문자를 입력하려고 한다. f{문자} : 문자검색 ; : f 명령으로 검색을 반복하는 명렁

Tip4. 실행하기, 반복하기, 되돌리기

기능    동작    반복    되돌리기
내용변경하기    {편집}  .   u
행에서 다음 문자 찾기 f{문자}    ;   ,
행에서 다음 문자 찾기 F{문자}    ;   ,
문서에서 다음 일치 찾기 /패턴<CR>    n   N
치환 동작하기 :s/대상/치환      &   u
연속변경 실행하기 qx{변경}q     @x  u

Tip5. 직접 찾고 치환하기

커서를 이동한후 * 명령을 사용해서 해당 단어를 검색한다. cw 는 현재 커서가 있는 곳의의 단어를 삭제한 다음 끼워넣기 모드로 변경한다. n. 통해 반복한다.

Tip6. 점 공식 만나기

앞의 나용 요약

2장. 일반모드

Tip7. 붓을 놓고 잠시 멈추기

일반모드는 자연스러운 대기 상태에 해당한다. 내용을 변경하기 위해 무조건 끼워넣기 모드로 전환해야하는 것도 아니다. 끼워넣기 모드로 전환하지 않고도 존재하는 코크를 새로운 양식으로 바꾸거나 복제, 이동, 삭제하는 작업이 간읗다.

Tip8. 덩어리로 실행 취소하기

vim 에서 u 명령으로 실행 취소 명령을 내릴 수 있다. 이 키를 누르면 가장 마지막 변경점으로 되돌린다. 글을 작성하다 보면 문장의 끝네서 다음에 무슨 내용을 작성해야 하는지 종종 멈추고서 생각할대가 있다. 이 시간이 얼마나 되든 상관없이, 입력을 멈출때마다 자연스럽게 끼워넣기 모드를 벗어난다.

Tip9 반복가능한 변경

daw : 단어전체(공백포함) 삭제하기 (delete a word) diw : 단어전체(공백제외) 삭제하기 (delete a word) ctrl-a : 숮자 증가(ex 180C-a 후 점명령어 가능) ctrl-x : 숮자 감소

가능한 한 일상적인 모든 작업에서 명ㄹ령을 반복할 수 있는 방식으로 명령으로 조합해서 사용하는 습관을 기르자.

Tip10. 간단한 산술에 실행 횟수 사용하기

cw : 단어하나 지우고 끼워넣기 모드

Tip11. 직접 반복할 수 잇다면 실행 횟수 사용하지 않기

실행 횟수를 넣어 짧게 입력한 명령이 모든 경우에 효율적인 것은 아니다.

2dw d2w dw.

중 어떤기능이 효율적일까 개인적인 취향에 따라서 갈리는 부분이다.

Tip12. 분할 정복

vim 은 오퍼레이트 와 모션 기능을 조합해서 사용할 수 있다.

오퍼레이션 + 모션 = 행동

g~ 대소문자 변환하기
gu 소문자 변환하기 
gU 대문자 변환하기

vim 문법에는 다른 규칙이 하나 더 있다. 오퍼레이터 명령을 반복해서 입력하면 현재행을 대상으로 동작한다는 것이다.

3. 끼워넣기 모드

tip13. 끼워넣기 모드에서 바로 교정하기

ctrl-h : 앞에 있는 글자 하나 제거하기 
ctrl-w : 앞에 있는 단어 하나 제거하기
ctrl-u : 행의 시작 부분까지 제거하기 

tip14. 일반 모드로 돌아가기

esc : 일반보드 전환
ctrl-[ : 일반모드 전환하기
ctrl-o : 끼워넣기 일반모드 전환하기 

tip15. 끼워넣기 모드를 벗어나지 않고 레지스터 붙여넣기

example
Practical Vim, by Drew Neil
ReadDrew Neil's


t : 찾는 문자 앞에서 멈춤
f : 찾는 문자에서 멈춤
ctrl-r{레지스터문자} : 레지스테의 문자 붙여넣기 

tip16. 즉석에서 계산하기

의자 6개 개당 35월 총계 $ 210

<ctrl-r>= : 단순계산기처럼 사용가능

tip17. 문자 코드를 이용해 일반적이지 않은 문자 입력하기

<C-v>{123} : 8진수 코드로 문자 삽입하기
<C-v>u{1234} : 16진수 코드로 문자 삽입하기
<C-v>{숫자아닌 문자} : 키문자로 삽입하기 

tip18. 이중자로 일반적이지 않은 문자 삽입하기

<C-k>{문자1}{문자2} : {문자1}{문자2}이중자가 나타내는 문자 삽입하기 

tip19. 바꾸기 모드로 존재하는 문서를 덮어쓰기

R : 바꾸기 모드 (띄어쓰기가 되지는 않음)

4장 비주얼 모드

tip20. 비주얼 모드의 내부 들여다 보기

tip.21 비주얼 영역 선택 정의 하기

v : 문자 단위 비주얼 모드 활성화 하기
V : 행단위 비주얼 모드 활성화 하기
<C-v> : 블록 단위 비주얼 모드 활성화하기
gv :  비주얼 모드에서 마지막으로선택했던 영역 다시 선택하기 


o : 비주얼 모드에서 커서 위치 좌우 전환 

tip22. 행 범위 비주얼 모드 반복하기

비주얼 모드에서도 점명령을 톤한 반복이 가능하다.

tip23.가능하면 비주얼 명령 대신 오퍼레이터 명령 사용하기

<a href="#">one two</a>

vit : tag 안의 내용을 선택할 수 있다. 

tip24. 탭으로 된 데이터를 비주얼 블록 모드로 편집하기

Vr~ : 한줄의 문자를 ~ 로 치환한다.

tip25. 문서의 열 변경하기

<C-v> 
c : 선택한 블럭만 지워지고 입력모드로 변경됨

tip26. 비주얼 블럭을 쪼개서 본문에 붙여넣기

<C-v> 
A : 선택한 블럭에 이상없이 위치만 이동

5장 명령행 모드

tip27 vim 의 명령행과 만나기

일반모드에서 ":" 입력시 진입

역사적인 이유로 명령행 모드에서 실행할 수 있는 명령을 ex 명령이라고 부른다.

tip28. 연속된 행에 명령 실행하기

숫자 : 해당 열로 이동한다.
숫자,숫자 : 시작행과 끝행
p : print
3d : 3번행으로 이동후 그행을 삭

tip29. :t와 :m 명령으로 행을 복제 또는 이동하기

:6t. - 6번행을 복사해서 현재행 밑에 붙여넣기
:t6 - 현재행을 복사해서 6번행 밑에 붙여넣기
:t. - 현재행을 복사해서 붙여넣기(일반모드의 yy와 유사)
:t$ - 현재행을 파일의 마지막에 붙여넣기
:'<,'>t0 - 비주얼 모드에서 선택한 행을 파일의 시작에 붙여넣기

t 대신 m 을 사용하면 이동한다.

tip30. 일반모드 명령을 범위 대상으로 실행하기

:normal Ex - 명령으로 점 명령을 실행할 범위를 지정해서 작업을 처리할 수 있다.

tip31. 마지막 Ex 명령 반복하기

점 명령은 가장 마지막에 실행한 일반 모드 명령을 반복하는 데 사용한다. 마지막 ex 명령을 반복하려면 @: 를 사용한다.

@: 사용해서 저장한 매크로를 실행한 다음에 그 매크로를 반복하려면 @@ 명령을 사용할 수 있다.

tip32. 탭키로 Ex 명령 완성하기

셀에서와 같이 프롬프트에서 명령을 자동완성할때는 를 사용한다.

tip33. 명령 프롬프트에서 현재 단어 추가하기

step1. 특정단어 검색 *
step2. cw변경단어<ESC>

공통된 단어를 검색중 해당 단어만을 수정할 수 있다.

tip34. 히스토리에서 명령 다시 호출하기

q/ 검색 히스토리 명령행 창 열기
q: ex 명령 히스토리 명령행 창 열기
<C-f> 명령행 모드에서 명령행 창으로 전환하기 

tip35. 셸에서 명령 실행하기

vim 을 벗어나지 않고도 간단하게 외부 프로그램을 실행할 수 있다. 이기능을 이용하면 버퍼에 있는 본문을 표준 입력으로 전송하거나 외부 명령을 실행해서 나오는 표준 출력을 버퍼에 추력할 수 있다.

:!{명령} 
:shell

tip36. 배치를 사용해서 여러 Ex명령 구동하기

2부 파일

6장 여러파일 관리하기

tip37. 버퍼 목록으로 열린 파일 추적하기

파일과 버퍼의 차이점 이해하기

  • 파일은 디스크에 보관하고 버퍼는 메모리에 보관한다.
  • ls 로 현재 메모리에 존재하는 모든 버퍼 목록을 확인할 수 있다.
bprev : 이전 버퍼로 이동
bnext : 다음 버퍼로 이동
<C-^> : 현재 버퍼와 이전버퍼를 빠르게 전환 

tip38. 인자 목록으로 버퍼 묶음 관리하기

tip39. 숨김 파일 관리하기

버퍼를 수정하였지만 실수로 저장하지 않고 종료하는 일을 방지하기 위해서 vim 에서는 수정된 버퍼가 특별하게 다뤄진다.

:w 버퍼의 내용을 디스크에 작성
:e! 디스크에서 파일을 다시 읽어 버퍼에 반영(즉, 변경을 취소)
:qa! 모든 창을 닫음, 경고 없이 변경을 모두 취소함
:wa 변경한 모든 버퍼를 디스크에 저장

tip40. 작업 환경 창 분리하기

<C-w>s 화면을 상하로 분리
<C-w>v 화면을 좌우로 분리
:sp {파일명} 현재 창을 수평으로 분리, 파일을 새창에 불러옴
:vsp {파일명} 현재 창을 수직으로 분리, 파일을 새창에 불러옴

<C-w>w 열린 창을 순회하며 이동
<C-w>h 좌측으로 창이동 
<C-w>l 우측으로 창이동 
<C-w>k 상단으로 창이동 
<C-w>j 하단으로 창이동