DaleSchool

비주얼 모드

입문15분

학습 목표

  • v, V, Ctrl+v로 세 가지 비주얼 모드를 사용할 수 있다
  • 비주얼 모드에서 선택 후 오퍼레이터를 적용할 수 있다
  • 블록 선택으로 여러 줄을 동시에 편집할 수 있다

동작하는 코드

아래 코드가 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"
  1. 첫 번째 줄의 맨 앞에 커서를 놓으세요.
  2. Ctrl+v로 블록 비주얼 모드에 진입하세요.
  3. 3j로 네 줄을 선택하세요.
  4. I(대문자)를 누르고 # 을 입력한 뒤 Esc를 누르세요.
  5. 결과를 확인하세요. 네 줄 모두 주석 처리됐나요?

주석을 제거하려면: Ctrl+v3jl(2칸 선택) → d

question: "여러 줄을 동시에 편집할 수 있는 비주얼 모드는?" options:

question: "비주얼 모드에서 선택한 텍스트를 대문자로 변환하는 키는?" options:

question: "gv는 어떤 동작을 하나요?" options: