작성: 2020-07-29 수정:
2020-07-29
Vim 사용법
Vim을 시작하기 위해 최소한으로 알아야 되는 정보
1. 커서 이동
h
: 왼쪽j
: 아래k
: 위쪽l
: 오른쪽
2. 파일에서 커서, 화면 이동
^E
: 위로 이동 (커서 위치 유지)^Y
: 아래로 이동 (커서 위치 유지)^F
^B
{Num} + G
: 해당 라인 위치로 이동
3. 편집의 기초
Insert Mode
i
: 커서 위치에 삽입a
: 커서 다음 위치에 삽입I
: 행의 맨앞 위치에 삽입A
: 행의 마지막 위치에 삽입
ESC가 눌러지기 까지 하나의 수정단위가 된다. u를 누른 경우 해당 명령이 undo가 된다.
4. 반복 명령
.
가장 마지막에 수행한 명령을 재실행
5. Command Line 모드
:q
: 종료:w
: 저장:w
: 저장:qw
: 저장 후 종료
6. 한 줄 삭제, 단어 삭제
dd
: 한 줄 삭제dw
: 단어 삭제u
: 하나의 편집 단위를 undoU
: 한 줄의 모든 수정을 undo
7. 블럭설정하기
v
: hjkl을 이용한 블럭 설정V
: line 단위로 Visual 블럭 설정^V
: 세로 단위 Visual 블럭 설정
8. 간단한 편집(replace, changem, one-mode)
r
: 하나의 문자를 변경R
: 현재 커서위치로 부터 덮어쓰기cc
: 현재 라인 삭제 후 입력 모드cw
: 단어 삭제 후 삽입 모드o
: 현재 커서 아래에 줄 삽입 후 입력 모드O
: 현재 커서 위에 줄 삽입 후 입력 모드
9. 복사 붙이기, 삭제 후 붙이기, 레지스터
p
: 현재 커서 아랫 줄에 붙여 넣기P
: 현재 커서 위치에 붙여 넣기yy
: 한 줄 복사Y
: 한 줄 복사
10. 작업파일 전환, 디렉토리 열기
vim {dir}
: vim은 파일이 아닌 디렉토리도 실행 할 수 있다.:e {fileName}
: 해당 파일 열기^L
: 화면 다시 그리기^C
: 작업중인 파일 확인하기
11. 창을 분할하여 편집하기 기초
:sp
: 창을 수평으로 분할:vsp
: 창을 수직으로 분할^WW
: 분할 되어있는 창 이동^WJ
: 창 이동 j 방향^WK
: 창 이동 k 방향^WH
: 창 이동 h 방향^WL
: 창 이동 l 방향^WC
: 현재 창 닫기
12. 창 분할, 창 크기 조정
-
^W=
: 화면의 크기를 동등하게 - 수평으로 확장한 경우(
:sp
) ^W_
: 현재 화면을 전체 화면으로-
{num}^W_
: 원하는 라인 수 만큼 확장 - 수직으로 확장한 경우(
:vsp
) ^W|
: 현재 화면을 전체 화면으로{num}^W|
: 원하는 라인 수 만큼 확장
13. 파일 비교하기
vimdiff a.c b.c
l
: 변경 사항이 없는 같은 내용은 holding이 되어있는데, 접는 선에서 l을 누르면 해제할 수 있다.dp
: 다른 창으로 diff 내용 보내기do
: 다른 창에서 diff 내용 가져오기
14. Explore, Split explore
Ex
orExplore
: 작업중인 파일에서 다른 디렉토리 열기Se
: 분할된 창으로 다른 디렉토리 열기
15. 디렉토리 명령어 RDdo
해당 변경할 디렉토리를 연다 :Ex
R
: 이름 변경하기D
: 삭제 하기^WO
: 현재 커서가 위치한 윈도우를 제외한 나머지 모두 닫기
16. 찾기, 단어찾기
/{str}
: 찾고 싶은 문자열 검색?{str}
: 찾고 싶은 문자열 역방향 검색n
: 다음 문자열N
: 이전 문자열*
: 커서가 위치한 단어 검색#
: 커서가 위치한 역방향 단어 검색
17. man page, pydoc 확인하기
K
: 해당 단어의 메뉴얼{num}+K
: 원하는 번호의 메뉴얼- pydoc 파이썬 메뉴얼 프로그램
- *.py 파일에서
K
실행 시 pydoc이 실행됨
18. 커서 밑 파일 열기
^WF
: 해당 경로의 파일이 열림:set isfname
해당 변수를 통해 파일을 판단
19. 버퍼 이용하기 1
:ls
,:buffers
,:files
- 현재 열려있는 버퍼는 %
- 직전에 열려있는 버퍼는 #
- a는 active 상태를 나타냄
:sb+{num}
버퍼에 있는파일을 스플릿 하여 열기:ls!
(Unlist 버퍼까지 보기)
20. 버퍼 이용하기 2
Ctrl-^
,:b N
이전 버퍼에 있는 파일 열기
21. 레지스터
- 윈도우에서의 클립보드와 유사
- vim이 종료 되어도 (~/.viminfo) 에 저장 되어 있기 때문에 다시 불러 올 수 있음
:reg
register에 저장 된 목록 보기0
: 복사를 할 때 사용하는 레지스터1
: 삭제를 할 때 사용하는 레지스터""
: 마지막에 사용한 레지스터 (Default)- 복사 레지스터와 달리 삭제 레지스터는 목록이 늘어나면 밑으로 쉬프팅 된다.
"+{num}+p
: {num}에 저장되어 있는 레지스터 붙여 넣기:wv
를 통해 현재 레지스터를 저장할 수 있다. (~/.viminfo):wv
이후 다른 파일을 열고 ``:rv`를 이용하면 해당 레지스터값을 이용할 수 있다.
22. 사용자 레지스터
(수정중)
추가 팁
윈도우에서 Caps Lock키를 ESC로 사용하기 위해서 여러가지 방법이 있지만, AutoHotkey라는 프로그램을 사용하면, 굉장히 편리한 스크립트를 사용할 수 있다. vim을 사용하다 보면, 한글일 때 명령어가 입력되지 않는 경험을 모두 해봤을 것이다. ex) :w -> :ㅈ 아래의 AutoHotkey를 설치해서 아래의 스크립트를 이용하면 Esc를 CapsLock키와 변경해 줌과 동시에 해당 키를 눌렀을 경우 한글 입력모드라면 영어입력 모드로 변경해 준다.
$CapsLock::
Send, {ESC}
if(IME_CHECK("A"))
Send, {VK15} ;영문이라면 한영전환 키를 입력해준다.
return
/*
IME check
*/
IME_CHECK(WinTitle) {
WinGet,hWnd,ID,%WinTitle%
Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd),0x005,"")
}
Send_ImeControl(DefaultIMEWnd, wParam, lParam) {
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, wParam,lParam,,ahk_id %DefaultIMEWnd%
if (DetectSave <> A_DetectHiddenWindows)
DetectHiddenWindows,%DetectSave%
return ErrorLevel
}
ImmGetDefaultIMEWnd(hWnd) {
return DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
}
Vim 설정하기
Linux의 경우 ~(/home/{user}) 경로에서 .vimrc
라는 파일을 생성해서 개인 환경 설정을 진행한다.
아래는 필자가 사용하는 간단한 설정 내용이다.
set number
: line number를 화면에 표시한다.set smartindent
: smart한 들여쓰기set tabstop=2
: tab의 크기를 2로 지정한다.set expandtab
: tab을 띄워 쓰기로 대체한다. (ex: tabstop=2 인 경우 띄어쓰기 두 칸)set shiftwidth=2
: » 또는 « 키로 들여쓰기 할때, 스페이스 갯수를 설정