대부분의 vi 버전은 홈 디렉토리의 .exrc 파일 뿐만 아니라 현재 디렉토리의 .exrc 파일도 읽는다. 이 기능을 이용하면 특정 프로젝트에 적합한 옵션들을 설정 할 수 있다.
예를 들어, 프로그래밍에 이용되는 디렉토리 내에서 다음과 같은 일련의 옵션들을 설정하고자 한다.
set number lisp autoindent sw=4 terse set tags=/usr/lib/tags
그리고 문서 편집을 위한 디렉토리에 대해 다음과 같은 옵션들을 설정하고자 한다.
set wrapmargin=15 ignorecase
홈 디렉토리의 .exrc 파일에 어떤 옵션을 설정할 수 있으며 로컬 디렉토리 내에서 설정을 취소할 수 있다(예를 들어, set wrapmargin=0 noignorecase)는 사실을 명심하자.
System V 릴리즈(release) 3.2 이후의 버전에서 vi는 홈 디렉토리의 .exrc 파일에 다음과 같이 exrc 옵션이 설정되어 있지 않으면 현재 디렉토리의 .exrc 파일을 읽지 않는다.
set exrc이런 메커니즘 덕택에 다른 사람이 시스템의 보안을 위협하는 명령어를 담고 있는 .exrc 파일을 여러분의 작업 디렉토리에 놓아두는 일을 막을 수 있다.
또한 vi의 환경을 .exrc가 아닌 다른 이름의 파일로 저장하고 :so 명령어를 이용해서 읽을 수 있다. 예를 들면, 다음과 같다.
:so .progoptions
로컬 .exrc 파일은 또한 축약어 및 키 맵핑을 정의하는데 유용하다. 예를 들어, 어떤 책이나 매뉴얼을 집필한다고 하면 집필 작업용 디렉토리 내의 .exrc 파일 속에 그 책에서 이용될 각종 축약어들을 정의할 수 있다.
아울러 vi와 ex에 대한 설정값이나 시작 명령어들을 환경 변수 EXINIT에 저장할 수도 있다. 만일 EXINIT에 설정된 값과 .exrc 파일에 설정된 값이 충돌이 난다면 EXINIT의 설정 값이 우선한다.
– Learning the vi Editor(1998, O’Reilly 출간)의 저자 TOR
BATO-PC:/export/home/proxies> more .exrc set autoindent # 자동으로 들여쓰기를 설정한다. set sm # showmatch의 약어로 괄호를 닫았을 경우, 시작 부분과 match하고 리턴한다. set showmode # 현재의 키 입력 상태를 표기한다. set shiftwidth=4 # 자동 들여쓰기시의 tab의 간격을 설정한다. set tabstop=4 # tab의 간격을 설정한다.
.exrc 설정의 예
원문 출처
O’Reilly의 UNIX POWER TOOLS 2nd Edition