vi는 가벼운 텍스트 데이터라서 서버에서 간단한 텍스트 수정 작업을 할 때 자주 사용한다.
그래서 Unix에서는 vi editor가 기본으로 설치되어 있어 자주 사용하고 Linux도 vi가 있지만, vi를 개선한 vim editor를 사용한다.
두 가지 모드로 명령 모드와 입력 모드가 있는데 입력 모드는 단어 뜻 그대로 사용자가 키보드를 통해 입력을 하는 모드이고 명령 모드는 vi/vim editor의 명령어를 통해 커서를 이동하거나 복사 또는 삭제하고 저장 또는 종료를 한다.
커서 이동 명령
| 명령어 |
설명 |
| h |
왼쪽으로 한 칸 이동 |
| j |
아래로 한 칸 이동 |
| k |
위로 한 칸 이동 |
| l |
오른쪽으로 한 칸 이동 |
| $ |
줄 끝으로 이동 |
| 0 |
줄 앞으로 이동 |
| ^ |
줄 앞의 첫 문자로 이동 |
| w |
다음 단어로 이동 |
| b |
이전 단어로 이동 |
| G |
마지막 줄로 이동 |
| [숫자]G |
[숫자] 라인으로 이동 |
| Ctrl + f |
한 페이지 아래로 이동 |
| Ctrl + b |
한 페이지 위로 이동 |
저장 & 종료 명령
| 명령어 |
설명 |
| :q! + Enter |
저장하지 않고 vim 강제 종료 |
| :wq + Enter |
저장하고 vim 종료 |
| ZZ |
저장하고 vim 종료 |
| :w + Enter |
파일을 저장 |
| :w [새로운 파일명] + Enter |
새로운 파일명으로 파일 저장 |
삭제 명령
| 명령어 |
설명 |
| x |
delete와 같이 작동 |
| X |
backspace와 같이 작동 |
| dw |
커서 위치부터 단어 끝까지 삭제 |
| d$ |
커서 위치부터 줄 끝까지 삭제 |
| D |
커서 위치에서 줄 끝까지 삭제 |
| dd |
커서 위치의 한 줄 삭제 |
| J |
커서가 위치한 줄의 줄바꿈 문자를 삭제 -> 아래 줄이 올라옴 |
| d[이동명령] |
현재 커서 위치부터 이동 명령에 의해 이동할 위치까지 삭제 |
입력 모드 시작하기
| 명령어 |
설명 |
| i |
현재 커서 위치에서 입력 모드 시작 |
| a |
현재 커서 위치의 한 칸 오른쪽에서 입력 모드 시작 |
| A |
현재 커서 위치의 줄 끝에서 입력 모드 시작 |
| o |
현재 커서 위치의 한 줄 아래에 빈 줄을 삽입하고 그 빈 줄에서 입력 모드 시작 |
찾기
| 명령어 |
설명 |
| /[“정규식”] |
아래 방향으로 “정규식”에 일치하는 문자열을 찾음 |
| ?[“정규식] |
윗 방향으로 “정규식”에 일치하는 문자열을 찾음 |
| n |
직접 찾기를 아래 방향으로 계속 |
| N |
직전 찾기를 윗 방향으로 계속 |
찾은 후 바꾸기
1
| :[시작 행, 끝 행][s/][정규식]/[바꿀 문자열]/[옵션]
|
- [시작 행, 끝 행]
- 1,100: 1번째 행부터 100번째 행 안에서 찾은 후 바꾸기
- ., 50: 현재 행부터 50번째 행 안에서 찾은 후 바꾸기
- .,$: 현재 행부터 끝 행 안에서 찾은 후 바꾸기
- %: 문서 전체에서 찾은 후 바꾸기
- [s/]
- 구분자(위 예에서는 ‘/’)를 지정하는 명령어인데 ‘s,’로 선언할 경우 [] 사이의 ‘/’가 아닌 ‘,’로 적어주면 된다.
- [옵션]
- g: 범위 내에 해당 문자열을 바꾸기
- i: 대소문자 무시
- c: 문자열 바꾸기 전에 확인 과정을 거침
명령문 반복
| 명령어 |
설명 |
| 3j |
커서가 3줄 아래로 이동 |
| 6w |
6번째 다음 단어로 이동 |
| 3 Ctrl + f |
화면 아래로 3번 이동 |
| 4dd |
현재 커서 위치에서 4줄 삭제 |
| 5x |
delete 키를 5번 누름 |
복사 및 붙여넣기
| 명령어 |
설명 |
| p |
클립보드의 내용을 현재 커서 위치에서 한 칸 오른쪽에 붙여넣기 |
| yy |
현재 커서가 위치한 줄이 클립보드에 복사 |
| 3yy |
현재 커서부터 3줄이 클립보드에 복사 |
| y[이동명령] |
현재 커서부터 이동 명령에 의해 이동할 위치까지 클립보드에 복사 |
| d[이동명령] |
현재 커서부터 이동 명령에 의해 이동할 위치까지 클립보드에 잘라내기 |
마크 찍기 및 마크로 이동
| 명령어 |
설명 |
| ma |
현재 커서가 위치한 곳에 a 마크 생성 |
| mb |
현재 커서가 위치한 곳에 b 마크 생성 |
| `a |
a 마크 위치로 커서 이동 |
| `b |
b 마크 위치로 커서 이동 |
기타
| 명령어 |
설명 |
| Ctrl + g |
현재 커서 위치의 줄 번호를 화면 아래 쪽에 출력 |
| . |
직전 명령을 한 번 더 실행 |