본문 바로가기
C.W.K.
Stream
Lesson 02 of 06 · published

Text Object — 구조에 작용

~14 min · vim, text-objects, structure

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

글자와 단어에서 구조

w$ 같은 motion은 방향을 가져. 커서에서 어디론가 가는 거지. text object는 구조를 가져. 무엇에 둘러싸여 있느냐로 정의되는 영역을 가리키거든. "괄호 안", "이 단어 통째로", "HTML 태그 안" 같은 것들이야. 커서가 그 영역 안 어디에 있든 상관없어. 경계는 Vim이 알아서 찾아줘.

접두사 두 개

  • i = inner — 내용만, 감싸는 문자는 빼고.
  • a = around ("a" thing) — 내용에 감싸는 문자나 옆 공백까지 얹어서.

그래서 i"는 "따옴표 안쪽"이고, a"는 "따옴표까지 포함한 그 덩어리"야.

하루에 백 번 쓰게 될 text object

단어와 WORD: iw / aw (punctuation도 경계), iW / aW (whitespace만 경계).

따옴표: i", a", i', a', i`, a`.

괄호: i( = i) = ib (소괄호 안), i{ = i} = iB (중괄호 안), i[ = i], i< = i>. 전부 괄호까지 포함하는 a 짝이 따로 있어.

HTML / XML 태그: it (태그 안 — <p></p> 사이), at (태그까지 포함).

문장과 단락: is / as, ip / ap.

커서가 어디 있든 상관없어. ci"는 커서가 문자열 첫 글자에 있든 마지막에 있든 중간 어디에 있든 똑같이 먹혀. Vim이 바깥쪽으로 훑어 나가면서 감싸는 짝을 찾아주거든. text object가 Visual 선택보다 빠른 이유가 이거야. 자리 잡고 고르는 게 아니라, 영역에 이름을 붙여버리는 거니까.

머슬 메모리에 박아둘 조합

  • ci" — 따옴표 안쪽 바꾸기 ("문자열 갈아끼우기").
  • ci( — 괄호 안쪽 바꾸기 ("함수 인자 다시 쓰기").
  • ci{ — 중괄호 안쪽 바꾸기 ("이 블록 다시 쓰기").
  • cit — HTML 태그 안쪽 바꾸기.
  • diw — 이 단어 통째로 지우기.
  • daw — 단어에 뒤따르는 공백까지 지우기 (줄이 깔끔해져).
  • dap — 단락 통째로 지우기.
  • vi{ — 중괄호 안쪽 Visual 선택 (블록 들여쓰기에 좋아: vi{>).

Code

전체 text-object 표·vim
" 단어
iw  aw       " inner / around 단어 (punctuation = 경계)
iW  aW       " inner / around WORD (whitespace = 경계)

" Quote
i"  a"   " 더블 quote 안 / 주변
i'  a'       " 싱글 quote 안 / 주변
i`  a`       " 백틱 안 / 주변

" 괄호 (각자 닫는 괄호 동의어)
i(  i)  ib   " 괄호 안
a(  a)  ab   " 괄호 주변 (포함)
i{  i}  iB   " 중괄호 안
a{  a}  aB   " 중괄호 주변
i[  i]       " 대괄호 안
i<  i>       " 꺾쇠 안

" HTML / XML 태그
it  at       " 태그 안 / 주변

" 문장과 단락
is  as       " inner / a 문장
ip  ap       " inner / a 단락
Power combo — 이게 세상을 굴려·vim
ci"     " 더블 quote 안 change
ci(     " 괄호 안 change
ci{     " 중괄호 안 change
cit     " HTML 태그 안 change
diw     " inner 단어 삭제 (커서는 단어 있던 자리에)
daw     " a 단어 + 주변 스페이스 (라인 깔끔)
dap     " a 단락 + 뒤 빈 라인
yi{     " 중괄호 안 yank
vap     " 단락 visual select
vi(     " 괄호 안 visual select (>, =, gq 좋음)

External links

Exercise

함수 정의가 하나라도 있는 파일을 열어. 화살표 키는 쓰지 말고. (1) 화면 아무 데나 있는 따옴표 문자열을 ci"로 바꾸기, (2) 함수 호출의 인자를 ci(로 갈아끼우기, (3) dap로 단락 통째로 지우기, (4) 함수 본문을 =i{로 다시 정렬하기. 넷 다 합성 동사 하나로 끝나야 해.

Progress

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

댓글 0

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

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