동작하는 코드
아래 코드가 Vim에 열려 있다고 생각해 보세요.
name = "Alice"
age = 25
city = "Seoul"
email = "alice@example.com"
첫 번째 줄에서 V를 누르면 줄 전체가 하이라이트돼요. 그 상태에서 j를 두 번 눌러보세요. 세 줄이 선택된 게 보일 거예요. 이제 d를 누르면 선택된 세 줄이 한 번에 삭제돼요.
이게 비주얼 모드예요. 먼저 선택하고, 그다음에 명령을 적용하는 방식이에요.
직접 수정하기
아래 코드로 세 가지 비주얼 모드를 직접 체험해 보세요.
const items = ["apple", "banana", "cherry", "date"];
1. 문자 비주얼 모드 (v):
"apple"위에 커서를 놓고v를 누른 뒤e로 단어 끝까지 선택하세요.y를 눌러 복사하고, 원하는 위치에서p로 붙여넣기 하세요.
2. 줄 비주얼 모드 (V):
"banana"줄에서V를 누르고j로"cherry"까지 선택하세요.>를 눌러 들여쓰기를 추가해 보세요.
3. 블록 비주얼 모드 (Ctrl+v):
- 각 줄의
"앞에 커서를 맞추고Ctrl+v를 누르세요. 3j로 네 줄을 선택하고I(대문자)를 누른 뒤//를 입력하세요.Esc를 누르면 네 줄 모두에//가 추가돼요.
"왜?"
세 가지 비주얼 모드
| 모드 | 키 | 선택 단위 | 주요 용도 |
|---|---|---|---|
| 문자 비주얼 | v | 글자 단위 | 단어나 구문 선택 |
| 줄 비주얼 | V | 줄 단위 | 여러 줄 삭제, 이동, 들여쓰기 |
| 블록 비주얼 | Ctrl+v | 사각형 블록 | 여러 줄 동시 편집, 열 선택 |
선택 후 적용할 수 있는 명령
비주얼 모드에서 영역을 선택한 뒤 다양한 명령을 적용할 수 있어요.
| 키 | 동작 |
|---|---|
d | 선택 영역 삭제 |
y | 선택 영역 복사 |
c | 선택 영역 삭제 후 입력 모드 |
> | 들여쓰기 추가 |
< | 들여쓰기 제거 |
~ | 대소문자 토글 |
U | 대문자로 변환 |
u | 소문자로 변환 |
J | 선택된 줄을 한 줄로 합침 |
블록 비주얼의 마법
블록 비주얼 모드(Ctrl+v)는 Vim에서 가장 강력한 기능 중 하나예요. 여러 줄을 동시에 편집할 수 있거든요.
여러 줄 앞에 텍스트 추가하기:
1. Ctrl+v로 블록 선택 시작
2. j 또는 k로 원하는 줄까지 선택
3. I (대문자)를 눌러 입력 모드 진입
4. 텍스트 입력
5. Esc → 선택된 모든 줄에 동일한 텍스트가 추가됨
여러 줄 끝에 텍스트 추가하기:
1. Ctrl+v로 블록 선택 시작
2. j로 원하는 줄까지 선택
3. $ 로 줄 끝까지 확장
4. A (대문자)를 눌러 끝에 입력
5. 텍스트 입력 후 Esc
유용한 팁
gv: 마지막으로 선택했던 영역을 다시 선택해요. 들여쓰기를 여러 번 할 때 유용해요.o: 비주얼 모드에서 선택 영역의 반대쪽 끝으로 커서를 이동해요.Esc: 비주얼 모드를 취소하고 노멀 모드로 돌아가요.
오퍼레이터+모션 vs 비주얼 모드
이전 레슨에서 배운 d2w(2단어 삭제)는 비주얼 모드 없이도 동작해요. 그러면 비주얼 모드는 언제 쓸까요?
- 정확한 범위를 눈으로 확인하고 싶을 때
- 블록(열) 편집이 필요할 때
- 범위가 복잡해서 모션으로 표현하기 어려울 때
익숙해지면 간단한 작업은 오퍼레이터+모션으로, 복잡한 작업은 비주얼 모드로 처리하게 돼요.
심화 학습
비주얼 모드에서 텍스트 오브젝트 사용하기
비주얼 모드에서도 텍스트 오브젝트를 쓸 수 있어요.
vi" → 따옴표 안의 내용을 선택
vi{ → 중괄호 안의 내용을 선택
vip → 현재 문단을 선택
선택된 상태에서 d, y, c 등을 적용할 수 있어요. 직접 di"를 입력하는 것과 결과는 같지만, 선택 영역을 눈으로 확인할 수 있다는 장점이 있어요.
블록 편집으로 주석 추가/제거
아래 코드를 Vim에 붙여넣고 블록 비주얼 모드로 주석을 추가해 보세요.
name = "Alice"
age = 25
city = "Seoul"
email = "alice@example.com"
- 첫 번째 줄의 맨 앞에 커서를 놓으세요.
Ctrl+v로 블록 비주얼 모드에 진입하세요.3j로 네 줄을 선택하세요.I(대문자)를 누르고#을 입력한 뒤Esc를 누르세요.- 결과를 확인하세요. 네 줄 모두 주석 처리됐나요?
주석을 제거하려면: Ctrl+v → 3j → l(2칸 선택) → d
question: "여러 줄을 동시에 편집할 수 있는 비주얼 모드는?" options:
question: "비주얼 모드에서 선택한 텍스트를 대문자로 변환하는 키는?" options:
question: "gv는 어떤 동작을 하나요?" options: