How To Add A File Extension To vim Syntax Highlighting
Wednesday, April 2nd, 2008
Today I was asked a question about defining custom extensions for vim syntax highlighting such that, for example, vim would know that example.lmx is actually of type xml and apply xml syntax highlighting to it. I know vim already automatically does it not just based on extension but by looking for certain strings inside the text, like
After digging around I found the solution. Add the following to ~/.vimrc (the vim configuration file):
1 2 3 | syntax on filetype on au BufNewFile,BufRead *.lmx set filetype=xml |
After applying it, my .lmx file is highlighted:
Same principle works, for instance, for mysql dumps that I have to do from time to time. If they don't have a .sql extension, you'll get something like:
After
1 2 3 | syntax on filetype on au BufNewFile,BufRead *.dump set filetype=sql |
everything is fine:
But why and how does it work, you ask?
| :help au | :au[tocmd] [group] {event} {pat} [nested] {cmd} Add {cmd} to the list of commands that Vim will execute automatically on {event} for a file matching {pat}. |
| :help BufNewFile | When starting to edit a file that doesn't exist. |
| :help BufRead | When starting to edit a new buffer, after reading the file into the buffer. |
| :help filetype | will actually tell this whole story in part B. |
And that's how you do it, folks.

(+3 rating, 3 votes)
beer planet is Artem Russakovskii's blog. Artem is a software engineer at
April 2nd, 2008 at 11:40 pm
I used to hate VIM when I first started programming. Now I am powerless without it. It's amazing how feature-rich the text editor is. I still learn new VIM tricks 3-4 times a month.
June 24th, 2008 at 12:10 am
This is the best ever, thanks for posting this!
I would only add that you can spare yourself the "syntax on" and "filetype on" lines if these are already your defaults and just add the new to-be-highlighted extensions with the "au" line.
Belissima!