Vim에 대하여
Vim에 대하여
- Vim이란
- 사용법
- 단축키
- 유용한 사이트
Vim이란
Vim(vi improved)은
AT&A라는 회사가 개발했던 vi라는 오픈 소스 문서 편집기를 복제한
라이선스 없이 사용 가능한 문서 편집기
- 키 조작을 단순화하고, 함수형 명령어를 조합하여 타수가 감소
- 모든 유닉스나 리눅스 시스템에도 기본적으로 설치되어 강력 호환
- 익숙해지기까지 시간이 걸리지만 숙달되는 만큼 문서 편집 효율 급상승
사용법
주로 3가지 모드
가 있다.
일반 모드
화살표 이동이나 특정 문자 수정/삭제 및 편집
입력 모드
텍스트 입력이 가능
- i (현 커서 위치에서 입력모드)
- a (현 커서 한 칸 뒤에서 입력모드)
- o (한 줄 추가 후 입력모드)
명령 모드
시스템과 관련된 부분을 담당
- ** : (콜론을 누르면 명령모드)
- 다음 명령을 사용 가능
- 뒤에 느낌표를 붙이면 강제 명령으로 실행
- 입력한 명령어는 하단 버퍼에 출력
- w (파일 저장)
- q (vim 종료)
- 파일을 변경하고 저장하지 않은 채 이 명령어를 사용하면 종료되지 않고, 이때 강제 종료를 원하면 !를 붙여 q! 입력
- qa (여러 개를 동시에 닫기)
- 여러 개를 저장하지 않고 동시에 강제종료 하려면 qa!
- 다 저장하고 종료하겠다면 wqa
- wq (파일을 저장하고 vi를 종료)
단축키
기본 이동
- h, j, k, l : 좌,하,상,우 커서 이동
- - : 줄의 처음 위치로 커서 이동
- gg : 맨 위로 커서 이동
- [shift + g] : 맨 아래로 커서 이동
단어 단위로 이동
- w : 단어의 시작 위치로 커서 이동 (forward 방향)
- Ex. 3w : 세 단어 앞으로 커서 이동
- e : 단어의 마지막 위치로 커서 이동 (forward 방향)
- b : 단어의 시작 위치로 커서 이동 (backward 방향)
- ge : 단어의 마지막 위치로 커서 이동 (backward 방향)
한 문장 내에서의 이동
- 0(숫자) : 라인 맨 앞으로 커서 이동
- ^ : 문장 맨 앞으로 커서 이동
- $ : 문장 맨 뒤로 커서 이동
대략적인 위치로 이동 (현재 보이는 페이지 기준)
- [shift + h] : 현재 보이는 페이지를 기준으로 맨 위로 커서 이동
- [shift + m] : 현재 보이는 페이지를 기준으로 중간 라인으로 커서 이동
- [shift + l] : 현재 보이는 페이지를 기준으로 맨 아래로 커서 이동
페이지 이동
- [ctrl+ f] : 다음 페이지의 첫 줄로 커서 이동
- [ctrl+ b] : 다음 페이지의 마지막 줄로 커서 이동
- [ctrl+ d] : 페이지의 절반 크기만큼 아래로 커서 이동
- [ctrl+ u] : 페이지의 절반 크기만큼 위로 커서 이동
원하는 줄 번호로 한 번에 이동
- 줄 번호 설정 및 해지
- [: + set number] : 줄 번호 설정
- [: + set nonumber] : 줄 번호 설정
- 방법1
- [esc] 를 눌러 표준 모드로 진입
- [:] 를 누른 후 원하는 [줄 번호] 입력
- 방법2
- [esc] 를 눌러 표준 모드로 진입
- 원하는 [줄 번호] 입력
- [shift + g] 입력
{}
(컬리 블레이스, Curly Brace) 을 기준으로 이동
- ]] :
{
로 커서 이동 (forward 방향)- 없으면 페이지의 맨 아래로 커서 이동
{
은 가장 상위의 블록을 감싸고 있는 문자만 찾는다.
- [[ :
{
로 커서 이동 (backward 방향) - ][ :
}
로 커서 이동 (forward 방향)- 없으면 페이지의 맨 위로 커서 이동
}
은 가장 상위의 블록을 감싸고 있는 문자만 찾는다.
- [] :
}
로 커서 이동 (backward 방향) - % :
{}
나()
에서 현재 괄호의 짝으로 커서 이동
삽입 관련 단축키 (입력 가능한 상태로 변경)
- i : 현재 커서가 위치한 문자의 앞에 Insert 하기
-
I : 현재 커서가 위치한 줄 맨 앞에 Insert 하기
- a : 현재 커서가 위치한 문자의 뒤에 Insert 하기
-
A : 현재 커서가 위치한 줄 맨 뒤에 Insert 하기
- O : 현재 커서가 위치한 줄 바로 윗줄에 Insert 하기
- o : 현재 커서가 위치한 줄 바로 아랫줄에 Insert 하기
삭제/잘라내기 및 수정 관련 단축키
- dd : 커서가 위치한 줄 잘라내기
- dw : 커서가 위치한 곳부터 단어의 마지막까지 잘라내기
- Ex. 숫자 + dd : 커서가 위치한 줄부터 숫자에 해당하는 수만큼의 줄 잘라내기
-
[shift + d] : 현재 커서의 위치부터 줄의 끝까지 잘라내기
- x : 커서가 위치한 문자 잘라내기
-
[shift + x] : 커서가 위치한 문자 바로 앞에 있는 문자 잘라내기
- s : 커서가 위치한 문자 잘라내고 Insert 하기
- cc 또는 [shift + s] : 커서가 위치한 줄 전체 잘라내고 Insert 하기
- cw : 커서가 위치한 곳부터 단어의 마지막까지 잘라내고 Insert 하기
-
[shift + c] : 현재 커서의 위치부터 줄의 끝까지 잘라내고 Insert 하기
- [r + 변경할 문자] : 커서가 위치한 문자 하나 수정하기
- Ex. 4rx: 현재 커서 이후 4개의 글자를 “x”로 수정한다.
복사/붙여넣기 관련 단축키
- yl : 현재 커서가 위치한 문자 하나만 복사하기
- Ex. 3yl : 현재 커서 이후 3개의 문자를 복사한다.
- yy : 현재 커서가 위치한 줄 복사하기
- yw : 현재 커서의 위치부터 단어가 끝나는 위치까지 복사하기
- y : 블럭 단위로 체크한 내용(비주얼 모드 이용) 복사하기 - 한 문자만 복사 X
- Ex. 숫자 + y : 커서가 위치한 줄부터 숫자에 해당하는 수만큼의 줄 복사하기
- Ex. y$ : 커서가 위치한 곳부터 줄의 마지막까지 복사하기
- p :
- 단어 복사: 현재 커서가 위치한 바로 다음 위치에 붙여넣기
- 행 복사: 현재 커서가 위치한 줄 바로 아랫줄에 붙여넣기
- [shift + p] :
- 단어 복사: 현재 커서가 위치한 바로 앞 위치에 붙여넣기
- 행 복사: 현재 커서가 위치한 줄 바로 윗줄에 붙여넣기
- 숫자 + p : 해당 숫자 만큼 붙여넣기를 반복하기
한 줄 선택
- [shift + v] : 라인 단위로 블럭지정이 가능하다.
단어 단위로 여러 줄 선택
- [esc] 를 눌러 표준 모드로 진입
- v 를 눌러 여러 줄을 선택할 수 있는 상태를 만든다.
- v : 단어 단위
- [shift + v] : 라인 단위
멀티 포커스
- [ctrl + v] : 블럭 단위로 여러 줄 선택. 즉, 사각형의 블럭지정이 가능하다.
검색
- / + 찾을 단어 + Enter : 문서에서 단어 찾기
- n 또는 * : 다음 찾기 (forward 방향)
- N 또는 # : 이전 찾기 (backward 방향)
다음 줄을 현재 커서가 있는 줄의 끝으로 이어 붙이기
- [shift + j] : 다음 줄을 현재 커서가 있는 줄의 끝으로 이어 붙인다.
취소하기/되돌리기 및 들여쓰기/내어쓰기
- u : Undo, 이전으로 취소하기
- [ctrl + r] : Redo, 취소한 것을 다시 되돌리기
- > 2번 클릭 : 들여쓰기
- >} : 한 문단 전체를 들여쓰기
- Ex. 2» : 2번 들여쓰기
- < 2번 클릭 : 내어쓰기
- . : - 이전 명령어를 다시 실행
대소문자 전환
- [shift + ~] : 현재 커서가 위치한 문자의 대소문자를 변경한다.
숫자 증감
- [ctrl + a] : 현재 커서가 위치한 하나의 문자가 숫자라면 해당 명령어로 숫자를 증가시킬 수 있다.
- [ctrl + x] : 현재 커서가 위치한 하나의 문자가 숫자라면 해당 명령어로 숫자를 감소시킬 수 있다.
창 열기/탭 이동 등
- [: + vs] : 현재의 창을 세로로 분할된 창으로 하나 더 열기
- [: + new] : 새 창을 현재의 창 아래(세로로)에 분할된 창으로 열기
- [: + tabnew] : 새 창을 현재의 창과 같은 위치에 열기
-
[ctrl + w] 2번 클릭 : 분할 창 간에 이동
- [gt] : 오른쪽 탭으로 이동
- [gT] : 왼쪽 탭으로 이동
코드 형식 관련
- zc : 코드 접기 (fold)
-
zM : 코드 모두 접기 (fold)
- zo : 접힌 코드 펼치기
-
zR : 접힌 코드 모두 펼치기
- zd : fold 지우기
- zD : 모든 fold 지우기
유용한 사이트
- Vim Adventures : 게임 형식으로 Vim 학습
- OpenVim : 주요 기능들을 쉽게 가이드해주는 웹 튜토리얼
- VimGenius : 퀴즈 형식으로 Vim을 연습할 수 있는 사이트
댓글남기기