2025/01/15

Vim 메모 모음



yiw/yiW   단어 복사
viwp/viWp 단어선택후 치환
viw"0P    0번 레지스터에 저장된 단어로 치환
viw2e     3개 단어 선택

yiw/yaw   단어 복사
yis/yS    문장[구두점(., !, ?)으로 끝나는 텍스트] 복사
yip       빈 줄로 구분된 텍스트 블록 전체를 포함하여 복사

:put      커서 아래행에 붙여넣기
:put!     커서 위에 붙여넣기
:put 0    커서 아래 0번 레지스터 붙여넣기

주요 레지스터 종류
" (무명 레지스터): 마지막 복사,삭제한 내용저장.
0 (읽기 전용): 복사
1~9 (기록용): 삭제
a~z (사용자 지정): 사용자 저장 레지스터
+/* (시스템 클립보드): "+y
/(검색):(명령)%(현파일명)#(이전파일명)

무명 레지스터 사용
(")yiw  단어 복사 -> 무명 레지스터에 저장
(")diw  단어 삭제 -> 삭제한 내용이 무명 레지스터에 저장
(")p    무명 레지스터의 내용을 현재 커서 위치에 붙여넣기

특정 레지스터 사용
"ayiw   a 레지스터에 단어 복사
"ap     a 레지스터의 내용을 붙여넣기


", @ 는 vim에서 특정한 작업을 수행하기 위한 명령의 형식
": 레지스터 지정 / @: 매크로 실행
q{레지스터}: 매크로 녹화/@{레지스터}: 매크로 실행


:g/aa/s//bb/
:%s/aa/bb/g
:.,$s/aa/bb/g


:let i=1 | g/^[0-9]/s/^/\=i."\r"/ | let i+=1
:let i=1: i라는 변수에 1을 할당
g/^[0-9]/s/^/\=i."\r"/: g명령은 전역적으로 특정 패턴을 찾고 해당 줄에서 명령을 실행
s/^/\=i."\r"/: 해당 줄의 시작(^)에 i의 값과 줄바꿈("\r")을 삽입
\=: 표현식을 사용한다는 뜻이고 .은 연산자로 i와 "\r"를 연결


치환에서 \r
:%s/foo/bar\rbaz/
표현식에서 \r
:%s/foo/\=i . "\r"/


\= 표현식은 Vim에서 치환 명령이나 특정 상황에서 표현식을 평가할 때 사용하는 문법
숫자계산: :%s/foo/\=1 + 2/
변수사용:
  :let x = 42
  :%s/foo/\=x/
문자열연결: :%s/foo/\="bar" . "baz"/
함수사용: :%s/foo/\=toupper("bar")/


들여쓰기
shift+v 선택후 > 이전작업 반복 . 이전작업 취소 u
명령행에서 3,5>> or 3,5>2 이전작업 반복 .
일반모드에서 >> 3>> 는 현재줄 한단계 밀기와 현재줄부터 3줄 한단계 밀기


매크로
qa → a 레지스터에 매크로 기록 시작후 다시 q는 매크로 종료
@a → a 레지스터에 저장된 매크로 실행
:reg 명령으로 저장된 매크로 내용을 확인


q: 명령 히스토리 창(command-line window)
/ 또는 ?를 사용해 특정 명령어를 검색
ctl+w= 화면 균등 분할
ctl+wc 창닫기
ctl+c 창닫기


이동
^,0: 행의 처음
$: 행의 마지막
w,W: 다음단어의 시작
b,B: 이전단어의 시작
e,E: 단어의 마지막
(): 현재/다음 문장의 시작
{}: 현재/다음 문단의 시작
[[]]: 글의 시작/끝
%: 현재 커서가 위치한 괄호((), {}, [])의 짝이 되는 괄호로 이동
zz: 현재 커서를 화면 가운데로 맞춤