A
O
s
.
f{찾는문자}
현재 행에서 문자 찾기
현재 커서로 부터 가장 가까운 곳으로 먼저 이동한다.
F
사용 시, 현재 위치에서 앞으로 찾는다.
t{찾는문자}
현재 행에서 문자를 찾은 뒤, 바로 이전으로 커서 이동
T
사용 시, 현재 위치에서 앞으로 찾는다.
찾기 명령어는 ;
으로 반복 가능하고 ,
으로 이전 위치로 돌아갈 수 있다.
찾기 명령어는 yf{문자}
혹은 yt{문자}
와 같이 yank 명령어와 조합하여 사용할 수 있다.
ciw
현재 커서 내 단어 삭제 후 INSERT 모드로 변경
ciw
의 경우 단어를 둘러싼 빈칸을 제거하지 않아 좀 더 자연스럽게 INSERT 가능하다.
반면 caw
는 빈칸 한개를 제거하므로 앞 단어에 INSERT 입력 글자가 붙게된다.
daw
현재 커서 내 단어 삭제
daw
의 경우 뒤의 빈칸 한개를 제거하므로 자연스럽게 삭제 가능하다.
반면 caw
는 빈칸을 제거하지 않아 두 칸의 공백이 생긴다.
^
$
w
다음 단어 시작 위치로 이동
W
의 경우 공백 단위로 묶이는 WORD 단위 이동을 한다. (좀 더 빠른 이동)
b
커서가 현재 단어 시작 위치가 아니라면, 현재 단어 시작 위치로 이동
만약 커서가 현재 단어 시작 위치라면, 이전 단어의 시작 위치로 이동
B
의 경우 WORD 단위 이동
e
커서가 현재 단어의 마지막 위치가 아니라면, 현재 단어의 마지막 위치로 이동
만약 커서가 현재 단어의 마지막 위치라면, 다음 단어의 마지막 위치로 이동
E
의 경우 WORD 단위 이동
*
/{검색어}<CR>
검색어를 바탕으로 커서 이동이 가능하다.
n
을 누르면 다음 위치로 이동, N
을 누르면 이전 위치로 이동
레지스터 값을 검색어로 사용할 수 있다.
정규 표현식을 사용하는 경우 /\v{검색어}
와 같이 사용하여 정규표현식에 대한 이스케이프를 처리하지 않을 수 있다.
정규 표현식을 사용하지 않고 literal 검색을 하려면 /\V{검색어}
와 같이 사용한다.
마크를 직접 생성하거나, 자동으로 생성되는 마크를 이용하여 커서 위치를 빠르게 이동시킬 수 있다.
m{마크명}
현재 커서에서 마크 생성
mm
이런식으로 마크를 생성하면 빠르게 만들 수 있다.
`{마크명}
(벨로그 마크다운은 백틱 이스케이프 안됨?!)
기본 생성되는 마크들을 이용하는 방법은 다음과 같다.
``
`.
`~
<Ctrl-q>
블록 비주얼 모드 (윈도우에선 Ctrl-q로 동작, 일반적으로는 Ctrl-v로 동작)
자유로운 비주얼 모드 선택 가능 (세로로 쭈욱 늘이는 것도 가능하다.)
만약 모든 줄에 ;를 붙여주고 싶은 시나리오라면 다음과 같이 수행한다.
<Ctrl-q>
<Shift-G>
$
<Shift-A>
마지막에 붙이고 싶은 문자
ESC
gv
r{바꿀문자}
o
:
를 눌러 시작하는 명령
EX 명령에서는 레지스터 값을 사용할 수 있다.
<Ctrl-r><Ctrl-w>
를 사용하면 된다.@:
방금 전 수행한 EX 명령을 재수행
EX 명령은 :
입력 후 키보드 방향키를 사용하여 히스토리를 뒤져볼 수도 있다.
:%s/검색 단어/치환 단어/gc
가장 많이 사용하는 치환 EX 명령
s
는 substitue
치환의 약자
%
는 모든 행 적용
g
는 현재 행에 모두 적용
c
는 치환 전에 확인 후 치환 적용 여부 결정
y
n
q
a
검색 패턴은 비워두면 이전 검색 패턴을 재사용한다.
VIM에서 대부분의 삭제, 치환 동작은 잘라내기로 동작한다.
d
, c
, s
, x
레지스터는 "{레지스터명}
와 같이 사용할 수 있고, 뒤에 쓰고 싶은 명령어를 덧붙인다.
특별히 레지스터를 지정하지 않는다면 무명 레지스터에 값들이 저장되고 사용된다.
INSERT 모드, EX 명령 입력 시엔 <Ctrl-r>
을 눌러 "
입력을 대신할 수 있다.
<Ctrl-r>{레지스터명}
을 통해 값을 붙여넣을 수 있다."0
은 복사용 레지스터로 d
, c
, s
, x
와 같은 명령에 의해 영향을 받지 않는다.
"_
는 블랙홀 레지스터로 이곳에 저장된 값은 바로 사라진다.
p
P
비주얼 모드 선택 후 p
로 값을 붙여넣으면 변경 전 내용이 무명 레지스터에 저장된다.
출처
주먹이 먼저 반응하네요.