我想知道是否有方法让vim读取.gitignore文件并使用它们来确定自动完成文件名时不显示的选项。我可以让vim尊重我的.gitignore文件吗?
例如,在python中工作,我不想看到提供编辑的.pyc文件。我认为vim有它自己的机制,我想知道如何从.gitignore加载信息到它。
我想知道是否有方法让vim读取.gitignore文件并使用它们来确定自动完成文件名时不显示的选项。我可以让vim尊重我的.gitignore文件吗?
例如,在python中工作,我不想看到提供编辑的.pyc文件。我认为vim有它自己的机制,我想知道如何从.gitignore加载信息到它。
至于建议的@dwc,这里有一个VIM脚本:
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
采取这一来源,并把它在你的插件目录中的文件,如~/.vim/plugin/gitignore.vim
。它会读取您的.gitignore
文件并解析它,将其格式转换为适合wildignore
的格式,然后设置该选项。
限制:
.gitignore
文件。没有努力去寻找其他.gitignore
文件并解析它们。或者,您可以在第一行指定文件的绝对路径。wildignore
选项不支持的概念否定忽略像你可以在.gitignore
文件。也就是说,你不能说:set wildignore=*.html,!foo.html
让它忽略除foo.html
之外的所有html文件。因此,.gitignore
行开头!简单地被忽略。Vim会忽略选项wildignore
指定文件模式,所以你可以将它们像这样:
:set wildignore=*.o,*~,*.pyc
,或将同一行(不带“:”)在你的〜/ .vimrc文件。如果你需要一些更加动态的东西来调整当前目录中的.gitignore,那么你需要做一些脚本,但是我会把它作为别人的练习。
很好的回答。注意:\ *。o \ *〜和* *。pyc之间不能有空格,所以它应该是:`:set wildignore = *。o,*〜,*。pyc`。干杯 – 2010-02-15 15:36:41
我写了一个插件这样的:https://github.com/octref/RootIgnore
它可以自动添加.gitignore
模式,以您的wildignore。
一些方便的功能:
my_proj/ .gitignore .git/ sub/
如果你cd到子,和开放的Vim那里,插件进入递归地找到.gitignore
并将其添加到wildignore
。
let g:RootIgnoreUseHome = 1
轻松添加~/.gitignore
规则。
仅供参考,以下是vim.org上的代码:http://www.vim。org/scripts/script.php?script_id = 2557 – Florian 2012-03-26 09:32:21