C.W.K.
Stream
Lesson 03 of 06 · published

Visual Mode — 선택 후 작용

~11 min · vim, visual-mode, selection

Level 0갇힌 자
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

복잡한 선택을 위한 안전망

대부분 operator + text object 가 Visual mode 보다 빨라. 근데 임시 선택 — "이거랑 다음 네 라인 + 끝의 그 부분" — 에는 Visual mode 가 작동시키기 직전에 정확히 뭘 선택했는지 보여주고, operator 를 마지막에 누르게 해줘.

Visual 의 세 가지 맛

  • v — 캐릭터 단위. 한 글자에서 여러 라인까지.
  • V — 라인 단위. 라인 어디에 있든 통째로.
  • Ctrl-v — 블록 (컬럼). 컬럼 편집의 킬러.

먼저 선택, 그 다음 동사

Visual mode 진입한 다음, 모든 motion 이 선택을 확장하거나 축소해. 선택이 원하는 모양이면 operator 를 누르: d 삭제, y yank, c change, > indent, = auto-format, : 가 선택된 영역에 scoped 된 Command-line 으로 떨어뜨려 ('<,'>).

블록 선택 — 컬럼 편집

다른 에디터들이 거의 못 따라잡는 동작. Ctrl-v 누르고, 아래로 이동해서 컬럼 정의하고, I 로 블록 시작에 insert, 텍스트 입력, Esc — Vim 이 그 편집을 블록의 모든 라인 에 적용. A (컬럼 뒤 append), c (컬럼 change), d (컬럼 삭제) 도 동일.

블록-Insert 특이점: Ctrl-v + I 세션에서 타이핑한 텍스트가 Esc 누르기 전까지 첫 라인에만 보여. 그 다음에 Vim 이 모든 선택된 라인에 복제. 정상이야; 당황해서 abort 하지 마.

마지막 선택 다시 선택

gv 가 마지막 visual 선택을 되살려 — 영역에 작용 후 다음 operator 를 원했는데 선택 다시 정의 없이 다시 하고 싶을 때 보배.

다른 끝 pivot

Visual mode 안에서, o 가 선택의 다른 끝으로 점프 — 앞으로 시작했는데 뒤로 확장하고 싶을 때, 또는 그 반대.

Code

Visual 세 맛·vim
v       " 캐릭터 단위 visual
V       " 라인 단위 visual
Ctrl-v  " 블록 visual (컬럼)
gv      " 마지막 visual 다시 선택
o       " Visual 안: 선택의 다른 끝으로 pivot
Visual 선택에 작용·vim
viw d            " inner 단어 선택, 삭제
Vjjj d           " 라인 단위: 4 라인 선택, 삭제
v$ y             " 라인 끝까지 선택, yank
Vi( >            " 괄호 안 라인 단위 선택, indent
vap =            " 단락 선택, auto-format
:'<,'>sort       " 선택한 라인 sort
블록 편집 — 여러 라인에 prefix 추가·vim
" Python 5 라인 주석 처리 (현재 커서부터):
Ctrl-v       " 블록 모드 진입
4j           " 4 라인 더 아래로 확장 (총 5 선택)
I            " 블록 시작에 insert
# <Esc>      " '# ' 입력 후 Esc — Vim 이 모든 라인에 mirror

" 컬럼 삭제 — 4 leading 스페이스:
Ctrl-v 3l 4j d   " 4 cols × 5 라인 선택, 블록 삭제

External links

Exercise

Python 또는 JavaScript 파일 열어. Ctrl-v + I 로 5 라인 블록에 // 또는 # 주석 prefix 추가. 그 다음 다른 블록에서 Ctrl-v + d 로 4 leading 스페이스 컬럼 삭제. Esc 후 prefix 가 모든 라인에 나타나는 순간에 주목 — 그게 Vim 만의 동작이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.