vim에서 h,j,k,l 명령에만 익숙해지는 것도 사실 쉽지 않고, 일단 익숙해지면 이 키들을 연타하는 식으로 커서를 움직이는데, 특정한 위치로 바로 이동할 수 있는 jump관련 명령이 손에 익으면 그만큼 편리할 수가 없더라. jump와 관련된 명령들을 한 번은 정리하고 가자.
마커
m
을 이용해서 현재 위치를 특정한 마커로 지정할 수 있고, 백팃 ` 이나 '
작은 따옴표를 이용해서 그 위치로 되돌아 갈 수 있다. 보통 마크는 a-z
, A-Z
, 0-9
와 몇 가지 특수문자가 적용되는데, 특수문자들은 특별한 의미를 가지는 것들이다. 다음은 vim에서 사용되는 마커의 특징이다. 이 중에서 사용자가 임의로 설정할 수 있는 마커는 0-9,a-z,A-Z 이며, 이 각각은 문자의 종류에 따라 또 의미가 조금씩 다르다. 그 외에 편집/선택과 관련하여 특징적인 마커가 있으니 살펴봐두자.
a-z
영어 소문자는 일반적인 마크. 파일마다 따로 관리된다.A-Z
는 여러 파일간에 유지된다.0-9
는 역시 여러 파일간에 유지되는데 ….viminfo
파일 내에 저장된다고 한다. 따라서 vim을 종료/재시작한 후에도 위치를 기억할 수 있다. (실제로 이는 vim을 빠져나갔을 때 위치를 기억한다고 한다.)< >
는 이전 선택 영역의 처음과 끝을 가리킨다."
는 최종적으로 수정한 위치를 가리킨다.'
는 점프하기 이전 위치로 돌아간다.^
는 삽입모드가 최종적으로 종료된 위치로 돌아간다..
은 최종 변경이 시작된 위치이다.[ ]
는 최종적으로 수정한 영역의 처음과 끝을 가리킨다.
:marks
를 사용하면 현재 이동할 수 있는 마크들을 보여준다.
점프
점프는 마커 이동을 비롯하여 '
, "
, G
, /
, ?
, n
, N
, %
, (
, )
, [
, ]
, {
, }
:s
, :tag
, L
, M
, H
등의 명령으로 불연속적으로 커서가 이동한 것을 말한다. 점프가 발생하면 항상 이전 위치가 기록된다. 이는 점프 리스트 사이를 오가는 명령으로 이동할 수 있고, 점프 발생시에는 '
, "
마커도 업데이트되므로 돌아가는 방법은 다 있는셈이다.
H
,M
,L
은 현재 윈도의 위/중간/아래로 가는 점프명령이다.
점프를 반복해서 이동하면 이동 경로는 점프리스트라는 별도의 버퍼에 저장된다. 이 때 <C-O>
는 점프리스트의 이전위치로, <C-I>
는 점프리스트의 이후 위치로 이동한다.
변경 위치
g;
,g,
는 최근 변경 위치를 전/후로 옮겨다닌다.- :changes는 최근 변경 위치들을 보여준다.
그외 모션
%
: 괄호 내에서 괄호의 시작과 끝으로 반복 이동한다.[(
[{
])
]}
: 짝이 맞지 않는 괄호를 찾아 이동한다.;