vi 모드와 이동
쉽게 말하면
vi는 키보드가 '명령용'과 '글자 입력용'으로 바뀌는 특이한 편집기예요. 처음 열면 명령용이라 글자를 쳐도 입력되지 않고, i를 눌러야 입력용이 돼요. Esc로 다시 명령용으로, :를 누르면 저장·종료 같은 명령을 쳐요.
시험용 정의
vi는 세 가지 모드를 오가며 쓴다. 명령 모드(이동·삭제·복사, 시작 상태), 입력 모드(글자 입력), ex 모드(명령 모드에서 :를 눌러 저장·종료·검색·치환).
비유로 이해하기
피아노의 페달처럼 모드를 바꾸면 같은 건반(키)이 다른 소리(기능)를 낸다. 예를 들어 명령 모드의 x는 한 글자 지우기, 입력 모드의 x는 글자 x다.
자세히
모드 전환
| 전환 | 키 |
|---|---|
| 명령 → 입력 | i I a A o O (아래 표) |
| 입력 → 명령 | Esc |
| 명령 → ex | : |
| ex → 명령 | 명령 실행(Enter) 후 자동 복귀, 또는 Esc |
입력 모드로 들어가는 키
| 키 | 입력 시작 위치 |
|---|---|
| i | 커서 앞 |
| a | 커서 뒤(append) |
| I | 줄의 맨 앞 |
| A | 줄의 맨 끝 |
| o | 현재 줄 아래에 새 줄 |
| O | 현재 줄 위에 새 줄 |
| s | 커서 글자 지우고 입력 |
| R | 덮어쓰기 모드 |
커서 이동 (명령 모드)
| 키 | 이동 |
|---|---|
| h j k l | 왼쪽, 아래, 위, 오른쪽 |
| w / b / e | 다음 단어 처음 / 이전 단어 처음 / 단어 끝 |
| 0 (또는 ^) / $ | 줄 처음 / 줄 끝 |
| gg / G | 파일 첫 줄 / 마지막 줄 |
| 숫자G (예: 10G) | 그 줄로 |
| H M L | 화면의 위, 가운데, 아래 |
| Ctrl+f / Ctrl+b | 한 화면 아래 / 위 (forward / backward) |
| Ctrl+d / Ctrl+u | 반 화면 아래 / 위 |
vi를 실행할 때 쓰는 옵션
| 명령 | 뜻 |
|---|---|
| vi 파일 | 파일 열기(없으면 새로 만듦) |
| vi + 파일 | 파일을 열고 마지막 줄에 커서 |
| vi +10 파일 | 10번째 줄에 커서 |
| vi +/문자열 파일 | 그 문자열이 처음 나오는 줄에 커서 |
| vi -r 파일 | 비정상 종료로 남은 스왑 파일에서 복구 |
| vi -R 파일 | 읽기 전용으로 열기(= view) |
시험에 이렇게 나와요
- 아래로 한 줄 이동 →
j(h 왼쪽, k 위, l 오른쪽) - 입력 모드로 바꾸는 키가 아닌 것 고르기 → i a o I A O s R은 입력 모드, e(단어 끝 이동)는 아님
- 파일을 열면서 커서를 마지막 줄에 →
vi + 파일, 복구 모드로 열기 →vi -r 파일
확인 문제
Q1. vi로 파일을 열자마자 글자를 쳤더니 글자가 입력되지 않고 이상한 동작을 했다. 왜일까?
- 읽기 전용 파일이라서
- 한글 입력 모드라서
- vi는 처음에 명령 모드라 입력한 키가 명령으로 해석된다
- 키보드 고장
정답 보기
3번 vi는 처음에 명령 모드라 입력한 키가 명령으로 해석된다
vi는 명령 모드로 시작한다. 글자를 넣으려면 i(insert) 같은 키로 입력 모드로 바꿔야 하고, 다시 명령 모드로 돌아올 때는 Esc를 누른다.
Q2. 명령 모드에서 입력 모드로 바꾸는 키가 아닌 것은?
- i
- a
- e
- o
정답 보기
3번 e
e는 단어 끝으로 이동하는 명령.
Q3. report.txt를 열면서 커서를 파일의 마지막 줄에 두는 명령은?
- vi $ report.txt
- vi -r report.txt
- vi + report.txt
- vi -e report.txt
정답 보기
3번 vi + report.txt
vi + report.txt다. +만 쓰면 마지막 줄, +10이면 10번째 줄로 간다. -r은 비정상 종료한 파일을 복구한다.
Q4. vi에서 현재 줄 아래에 새 줄을 만들고 입력 모드로 들어가는 키는?
- o
- a
- A
- O
정답 보기
1번 o
소문자 o = 아래, 대문자 O = 위.
Q5. vi 명령 모드에서 파일의 마지막 줄로 이동하는 키는?
- $
- L
- G
- gg
정답 보기
3번 G
G. gg는 첫 줄, $는 줄 끝.
Q6. 입력 모드에서 명령 모드로 돌아가는 키는?
- :
- Ctrl+C
- Esc
- i
정답 보기
3번 Esc
Esc다. 입력 모드에서 Esc를 누르면 명령 모드로 돌아간다. i는 반대로 명령 모드에서 입력 모드로 들어간다.
Q7. vi에서 커서를 아래로 한 줄 움직이는 키는?
- k
- h
- l
- j
정답 보기
4번 j
h 왼쪽, j 아래, k 위, l 오른쪽.
헷갈리기 쉬운 O·X
vi는 파일을 열면 입력 모드로 시작한다.
정답 보기
X 명령 모드로 시작.
A는 줄의 맨 끝에서 입력을 시작한다.
정답 보기
O a는 커서 뒤, A는 줄 끝.
vi에서 0은 줄의 맨 처음으로 이동한다.
정답 보기
O 맞는 설명이다.