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, work
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
endif
Take that source and put it in a file in your plugin directory, such as ~/.vim/plugin/gitignore.vim
. It will read your .gitignore
file and parse it, transforming its format into one suitable for wildignore
, and then set that option.
Limitations:
.gitignore
file from the directory where you launch vim. No effort is made to look for other .gitignore
files and parse them. Alternatively, you could specify an absolute path to a file on the first line.wildignore
option in vim doesn't support the notion of negating ignores like you can in a .gitignore
file. That is, you can't say :set wildignore=*.html,!foo.html
to have it ignore all html files except foo.html
. Therefore, .gitignore
lines that start with ! are simply ignored.