I was wondering if there is a way to get vim to read .gitignore files and use them to determine options not to present when auto-completing filenames.
For example, working in python, I'd like to not see .pyc files offered for editing. I think vim has its own mechanism for this, I was wondering how to load information from .gitignore into it.
-
Vim will ignore file patterns specified in option
wildignore, so you can set them like so::set wildignore=*.o, *~, *.pycOr place the same line (without the ":") in your ~/.vimrc file. If you need something more dynamic like adjusting to the .gitignore in the current directory then you'll need to do some scripting, but I'll leave that as an exercise for someone else.
Brian M. Hunt : Great answer. Note: You can't have spaces between the \*.o \*~ and \*.pyc, so it should be: `:set wildignore=*.o,*~,*.pyc`. Cheers -
As suggested by @dwc, here's a vim script:
let filename = '.gitignore' if filereadable(filename) let igstring = '' for oline in readfile(filename) let line = substitute(oline, '\s|\n|\r', '', "g") if line =~ '^#' | con | endif if line == '' | con | endif if line =~ '^!' | con | endif if line =~ '/$' | let igstring .= "," . line . "*" | con | endif let igstring .= "," . line endfor let execstring = "set wildignore=".substitute(igstring, '^,', '', "g") execute execstring endifTake that source and put it in a file in your plugin directory, such as
~/.vim/plugin/gitignore.vim. It will read your.gitignorefile and parse it, transforming its format into one suitable forwildignore, and then set that option.Limitations:
- This will read the
.gitignorefile from the directory where you launch vim. No effort is made to look for other.gitignorefiles and parse them. Alternatively, you could specify an absolute path to a file on the first line. - The
wildignoreoption in vim doesn't support the notion of negating ignores like you can in a.gitignorefile. That is, you can't say:set wildignore=*.html,!foo.htmlto have it ignore all html files exceptfoo.html. Therefore,.gitignorelines that start with ! are simply ignored.
- This will read the
0 comments:
Post a Comment