我想知道是否有办法让 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
让它忽略所有 html 文件,除了foo.html
. 因此,.gitignore
以 ! 开头的行 被简单地忽略了。Vim 将忽略 option 中指定的文件模式,所以你可以像这样设置它们: wildignore
:set wildignore=*.o,*~,*.pyc
或者在 ~/.vimrc 文件中放置同一行(不带“:”)。如果你需要一些更动态的东西,比如调整当前目录中的 .gitignore ,那么你需要编写一些脚本,但我会把它留给别人做练习。
我为此写了一个插件:https ://github.com/octref/RootIgnore
它可以自动将.gitignore
模式添加到您的 Wildignore。
一些方便的功能:
my_proj/ .gitignore .git/ sub/
如果你 cd 进入 sub,并在那里打开 Vim,插件会递归地找到.gitignore
并添加到wildignore
.
~/.gitignore
规则let g:RootIgnoreUseHome = 1
。