Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

With vim, how can I use autocmd's for files in subdirectories of a specific path?

Tags:

I am trying to figure out how I can define an autocmd that influences all files under a specific path.

The autocmd I have tried is something like

autocmd BufNewFile,BufRead /specificPath/** imap <buffer> .... 

Now, I'd expect this autocmd to be used if I edited, say, /foo/bar/specificPath/baz/something/bla.txt, but not if I edited /foo/bar/here/and/there/moreBla.txt

If I start vim being in a directory 'above' specificPath, this works as I want it. But it doesn't if I am below that directory. Obviously, the autocmd's pattern is matched against the relative file name, not the absolute one.

like image 818
René Nyffenegger Avatar asked Mar 13 '10 08:03

René Nyffenegger


2 Answers

So, I've done this in my code with paths under a particular path. You need to do:

autocmd BufRead,BufNewFile */somepath/* set filetype=sometype 

At least, that's what I was using to set a given filetype for things under a particular library path. Hopefully that will help with your example.

If you want to include all subdirectories, use **:

autocmd BufRead,BufNewFile */somepath/** set filetype=sometype 
like image 79
AlBlue Avatar answered Oct 05 '22 23:10

AlBlue


VIM's inbuilt help will answer all your questions. :)

:h autocmd-pattern 
like image 31
Hannes Avatar answered Oct 05 '22 23:10

Hannes