[VIM] 문법강조 추가 컴질 - 컴퓨터 잔재주

유닉스 환경에서 널리 사용되는 vim 에디터는 문법 강조 기능을 제공한다. 이를테면 확장자가 .java로 끝나는 파일은 Java, .pl인 파일은 Perl 언어에 맞는 문법 강조가 적용된다. 확장자에 따른 문법 적용은 vim이 설치된 디렉토리의 filetype.vim에 정의되어 있다. 필자가 사용하는 서버에서는 /usr/share/vim/vim63/filetype.vim에 해당한다. 설치 위치와 vim 버전에 따라 위치가 조금씩 다를 수있다.

filetype.vim 파일의 중간쯤을 보면 아래와 같은 부분이 있다. 암호 같아 보이는 이 부분은 특정한 확장자에 적용된 문법 파일을 정의한다. 필자의 경우 문법 파일은 /usr/share/vim/vim63/syntax 디렉토리에 존재하며, 각 파일의 이름은 아래 예제에서 setf 뒤의 값에 해당한다. 보통 확장자와 동일하게 사용하는 편이다.

" A-A-P recipe
au BufNewFile,BufRead *.aap         setf aap

" ABC music notation
au BufNewFile,BufRead *.abc         setf abc

" ABEL
au BufNewFile,BufRead *.abl         setf abel

새로운 확장자 추가

새로운 확장자에 대한 문법 강조를 적용하고 싶다면 어떻게 할까? 이를테면 .vh 확장자 파일에 Verilog 문법을 적용시키고 싶다고 하자. 이를 위한 코드는 매우 간단하다.

" Add a mapping rule for *.vh files
au BufNewFile,BufRead *.vh         setf verilog

문제는 이 코드를 어디에 추가할 것이냐에 있다. 크게는 아래와 같은 두 가지 방법이 있다.
  • vim 설치 디렉토리의 filetype.vim에 추가
  • 사용자 홈의 .vimrc 파일에 추가
첫번째 방법은 관리자 권한이 필요하며, 시스템을 사용하는 모든 사용자에 대해 적용된다. 반면, 두번째는 해당 사용자 계정 내에서 일어나는 작업이므로 별도의 권한이 필요없다.

기본 지원 확장자가 아닌 경우

가끔씩 문법 적용 파일이 아예 존재하지 않는 확장자들이 있다. 이를테면 Cadence Spectre 프로그램의 확장자인 .scs에 대한 문법 적용 파일은 vim에 포함되어 있지 않다. 하지만, 인터넷 검색을 통해 spectre.vim이라는 문법 적용 파일을 쉽게 얻을 수 있다. 문제를 이를 어떻게 .scs 확장자에 연결시키면 되는가 하는 점이다. 이는 아래와 같은 코드를 .vimrc에 포함시키면 된다. 주목할만한 점은 setf 대신에 so가 사용되었다는 점이다. 아래 코드는 파일 포맷을 정해주는 대신 specre.vim 파일을 그대로 읽어들여 실행한다.

au BufNewFile,BufRead *.scs so ~/spectre.vim

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://kmstudio.egloos.com/tb/1525208 [도움말]
  • VIM 사용자 메뉴얼 2009/07/22 12:41 #

    vim 은 유닉스 계열에서 전통적으로 널리 사용도던 vi 의 improve 즉 undo, syntax coloring, split windows 등의 기능을 포함시킨 vi 의 보강된 프로그램이다. 이 문서는 vim 의 기본적인 사용법과, 프로그래밍을 위한 여러가지 팁을 담고 있다. vim 버젼은 6.0 을 기준으로 한다.... more

덧글

덧글 입력 영역