vim 에서 파일을 열었을 때, vimgrep 등 다른 기능을 더 쓰고자 할 때 일단 지금 열고 있는 파일이 포함된 디렉토리로 현재 디렉토리를 변경해야 할 때가 있다.
이는 간단히 아래와 같이 할 수 있는데,
:cd %:p:h
그동안 의미를 모르고 그냥 외우다시피 하여 사용하고 있다가, 좀 더 찾아보자 싶어 검색을 하기 시작했는데, 의외로 이게 % 로는 찾아지지가 않고 이리저리 헤메다가 stack overflow 의 어딘가에서 vim help 페이지 링크(filename-modifiers)를 걸어둔 것을 찾아서 의미를 알게 되었다.
그리고 바로 느낀 감상은, 아… 역시 vim 의 세계는 장벽이 높구나.
그래도 p와 h 의 의미를 명확히 알게 되었고, 파일명을 치환하거나 하는 등의 복잡한 기능도 있다는 걸 새로 알게 되었다.
- p : 파일 경로를 full path 로 바꿔준다.
- 상대 경로로 파일을 열었거나, 리눅스의 홈 디렉토리 문자(~)등이 포함된 경우 절대 경로로 바꿔주는 역할이다.
- h : 파일이 포함된 디렉토리 경로로 바꿔준다.
- 좀 더 자세히는 마지막 디렉토리 구분자부터 문자열 마지막까지 제거해주는 동작이다.
현재 디렉토리를 파일이 포함된 디렉토리로 변경할 때 약식으로는 :cd %:h
라고 해도 된다고 하는데, 절대경로(full path)로 바꿔서 사용하는 게 안전할 것이라고 생각된다. 내가 전에 봤던 글에서도 아마 그래서 :cd %:p:h
로 가이드를 하고 있었을 것 같다.
ps.
참고로, 수백메가에서 수기가 짜리 텍스트 파일-주로 로그 파일을 보고 검색할 때 아직 vim 만한 도구를 찾지 못했다. 정말 대단하다. 아 최근에 써보고 감탄한 도구는 VisualStudio Code 도 있다. 이 녀석은 Electron(크롬 브라우저+자바스크립트) 기반이면서도 수백메가 짜리 파일을 잘 다루는 것을 보고 깜짝 놀랐다. 큰 파일을 다룰 것을 미리 잘 대비하지 않으면 웬만한 네이티브로 구현된 텍스트 에디터도 못 버티고 비정상 동작을 하는데 말이다.