동작하는 코드
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);
- 설정 영역에서
mc(config의 c)를 눌러 마크하세요 - 함수 정의 영역에서
mf(function의 f)를 눌러 마크하세요 - 함수 호출 영역에서
mu(usage의 u)를 눌러 마크하세요 'c,'f,'u로 세 위치를 자유롭게 오가보세요: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;를 누르면 돼요.
자신이 작업 중인 실제 코드 파일을 하나 열어보세요 (없으면 아무 긴 텍스트 파일도 괜찮아요).
- 파일 맨 위에서
mt(top)를 설정하세요 - 파일 중간쯤에서
mm(middle)을 설정하세요 - 파일 맨 아래에서
mb(bottom)을 설정하세요 't,'m,'b로 세 위치를 빠르게 오가보세요:marks로 설정한 마크를 확인하세요Ctrl+o를 여러 번 눌러서 점프 기록을 역순으로 따라가보세요
도전: 대문자 마크 mC를 설정한 뒤, 다른 파일을 열고(:e 다른파일) 'C를 눌러보세요. 원래 파일로 돌아가나요?
question: 현재 커서 위치를 마크 f로 저장하려면? answers:
question: 이전 점프 위치로 돌아가는 키는? answers:
question: 소문자 마크(a-z)와 대문자 마크(A-Z)의 차이는? answers: