jump 관련 명령 정리 – vim

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는 최근 변경 위치들을 보여준다.

그외 모션

  • %: 괄호 내에서 괄호의 시작과 끝으로 반복 이동한다.
  • [( [{ ]) ]} : 짝이 맞지 않는 괄호를 찾아 이동한다.;