DaleSchool

마크와 점프

입문15분

학습 목표

  • m{a-z}로 위치를 마크할 수 있다
  • '{mark}로 마크한 위치로 점프할 수 있다
  • Ctrl+o, Ctrl+i로 점프 목록을 탐색할 수 있다
  • :marks로 마크 목록을 확인할 수 있다

동작하는 코드

500줄짜리 파일을 편집하고 있다고 상상해보세요. 50번째 줄에 함수를 정의하고, 300번째 줄에서 그 함수를 호출해요. 두 위치를 왔다 갔다 해야 할 때 매번 줄 번호를 기억하기 어려워요.

마크를 사용하면 즐겨찾기처럼 위치를 저장할 수 있어요.

50G             ← 50번째 줄로 이동
ma              ← 이 위치를 마크 a로 저장

300G            ← 300번째 줄로 이동
mb              ← 이 위치를 마크 b로 저장

'a              ← 마크 a (50번째 줄)로 점프!
'b              ← 마크 b (300번째 줄)로 점프!

이렇게 한 글자로 원하는 위치에 즉시 도달할 수 있어요.

직접 수정하기

아래와 같은 코드 파일이 있다고 해보세요. Vim에서 직접 열어서 연습해보세요.

// 1번째 줄: 설정 영역
const API_URL = "https://api.example.com";
const TIMEOUT = 5000;

// ... 중간 코드 생략 ...

// 50번째 줄: 함수 정의 영역
function fetchData(url) {
  return fetch(url);
}

// ... 중간 코드 생략 ...

// 100번째 줄: 함수 호출 영역
fetchData(API_URL);
  1. 설정 영역에서 mc(config의 c)를 눌러 마크하세요
  2. 함수 정의 영역에서 mf(function의 f)를 눌러 마크하세요
  3. 함수 호출 영역에서 mu(usage의 u)를 눌러 마크하세요
  4. 'c, 'f, 'u로 세 위치를 자유롭게 오가보세요
  5. :marks로 설정한 마크 목록을 확인해보세요

이제 점프 목록도 실습해보세요.

gg              ← 파일 맨 위로
/fetchData      ← 검색으로 점프
50G             ← 50번째 줄로 점프
Ctrl+o          ← 이전 위치(검색 결과)로 돌아가기
Ctrl+o          ← 그 이전 위치(파일 맨 위)로 돌아가기
Ctrl+i          ← 다시 앞으로(검색 결과로)

"왜?"

마크는 파일 안의 북마크예요. 웹 브라우저에서 자주 가는 페이지를 즐겨찾기하듯, 코드에서 자주 가는 위치를 마크할 수 있어요.

소문자 마크(a-z) 는 현재 파일 안에서만 유효해요. 파일마다 독립적으로 26개를 쓸 수 있어요.

대문자 마크(A-Z)전역 마크예요. 파일을 넘어서 동작해요. mA로 마크하면 다른 파일에서 'A를 눌러도 그 파일의 그 위치로 점프해요. 프로젝트에서 자주 참조하는 설정 파일이나 메인 함수에 대문자 마크를 걸어두면 편리해요.

'(작은따옴표) vs `(백틱)의 차이: 'a는 마크한 줄의 첫 번째 비공백 문자로 이동해요. `a는 마크한 정확한 커서 위치(줄 + 열)로 이동해요.

점프 목록은 브라우저의 뒤로 가기/앞으로 가기 버튼이에요. 검색(/), 줄 이동(G), 마크 점프 등 "큰 이동"을 할 때마다 자동으로 기록돼요. Ctrl+o(older)로 뒤로, Ctrl+i로 앞으로 이동해요.

심화 학습

특수 마크 알아두기

직접 설정하지 않아도 Vim이 자동으로 관리하는 마크가 있어요.

마크의미
`.마지막으로 편집한 위치
`"파일을 마지막으로 닫았을 때의 커서 위치
''마지막으로 점프하기 전 위치
`[마지막으로 변경/붙여넣기한 텍스트의 시작
`]마지막으로 변경/붙여넣기한 텍스트의 끝

특히 ''(작은따옴표 두 번)는 정말 유용해요. "방금 전에 있던 곳"으로 즉시 돌아갈 수 있거든요.

점프 목록 vs 변경 목록

점프 목록(:jumps)은 커서의 "큰 이동" 기록이에요. Ctrl+o/Ctrl+i로 탐색해요.

변경 목록(:changes)은 텍스트를 수정한 위치 기록이에요. g;(이전 변경 위치)와 g,(다음 변경 위치)로 탐색해요. "아까 고쳤던 곳이 어디였지?" 할 때 g;를 누르면 돼요.

자신이 작업 중인 실제 코드 파일을 하나 열어보세요 (없으면 아무 긴 텍스트 파일도 괜찮아요).

  1. 파일 맨 위에서 mt(top)를 설정하세요
  2. 파일 중간쯤에서 mm(middle)을 설정하세요
  3. 파일 맨 아래에서 mb(bottom)을 설정하세요
  4. 't, 'm, 'b로 세 위치를 빠르게 오가보세요
  5. :marks로 설정한 마크를 확인하세요
  6. Ctrl+o를 여러 번 눌러서 점프 기록을 역순으로 따라가보세요

도전: 대문자 마크 mC를 설정한 뒤, 다른 파일을 열고(:e 다른파일) 'C를 눌러보세요. 원래 파일로 돌아가나요?

question: 현재 커서 위치를 마크 f로 저장하려면? answers:

question: 이전 점프 위치로 돌아가는 키는? answers:

question: 소문자 마크(a-z)와 대문자 마크(A-Z)의 차이는? answers: