vim 명령줄 모드에서 %
는 보통 현재 파일의 전체 범위1나 현재 파일 이름의 의미가 된다. 예를 들어 C 파일을 작성하던 중에 현재 파일을 컴파일하고 싶다면 :!gcc -c %
라고 할 수 있다. 그렇다면 함수와 같은 스크립트 문맥에서는 어떨까? 스크립트 문맥에서는 파일명확장이 이루어지지 않고, 대신에 expand()
함수를 써서 수동으로 처리해야 한다.
let current_file_name = expand('%')
let current_file_prefix = expand('%<')
그외 몇 가지 옵션이 있는데 이는 :h expand()
로 찾아보면 된다.
%
: 현재 파일이름#
: 대체 이름 (아마 이전 파일?)#n
: 대체이름 (n번째 이전 파일)<cfile>
: 커서가 있는 위치의 파일 이름<cword>
: 커서가 있는 위치의 단어<cWORD>
: 커서가 있는 위치의 단어를 대문자로
그외에 확장자가 붙어서 이를 변환할 수 있다. 그 중 일부만 소개하면 아래와 같다. (전체 목록은 도움말 내용을 확인하자.)
:p
: full path로 확장한다.:h
: 헤드 (마지막 패스 요소를 제거한다.):t
: 꼬리 (첫 패스 요소를 제거한다.)
%s/ ... //
등에서 범위로 사용될 때는 전체 범위를 의미한다. ↩