Makefile machit.vim不起作用

时间:2013-04-19 15:42:05

标签: vim makefile match

给出以下简单的Makefile:

#Makiefile
ifeq(,)
else
endif

根据this,只需要包含这个matchit.vim文件就足够了,该文件可以在捆绑的插件中找到。

不幸的是,它不适合我。最初,我认为我的其他插件可能与matchit冲突。但是,vim的空设置也不起作用。根据matchit的文档,它需要b:match_words来循环它们。由于matchit.vim是一个全局插件,因此b:match_words在相应的文件类型插件中定义。在vim.vim中验证,可以在标准运行时目录中找到。

我错过了什么吗?

PS:现在,我必须将它添加到我当地的make.vim中才能使其正常工作。

#make.vim
let b:match_words='\<ifeq\>:\<else\>:\<endif\>'

2 个答案:

答案 0 :(得分:2)

Makefile的文件类型为make。在我最近的$VIMRUNTIME/ftplugin/make.vim(日期为2006 Jun 17)中,b:match_words没有定义。

因此,您确实必须将定义添加到您自己的配置中,最好是~/.vim/after/ftplugin/make.vim

如果您认为这通常很有用并且默认情况下应该包含,您可以向脚本的维护者(Bram Moolenaar)发送补丁。

答案 1 :(得分:1)

@Ingo Karkat感谢您的信息。我已经把路径送到了Bram Moolenaar。希望它会出现在下一个版本中。如果有人急于求成,请尝试将其放入~/.vim/after/ftplugin/make.vim

" matchit.vim
if exists("loaded_matchit")
  let b:match_words =
    \ '\<if\(n\)\=\(eq\|def\)\>:\<else\>:\<endif\>,' .
    \ '\<define\>:\<endef\>'
endif

PS:由于加载了vim脚本的顺序,在标准ftplugin之前加载了~/.vim/ftplugin,所以如果只想在顶层构建ftplugin,最好将自定义的ftplugin放在~/.vim/after/ftplugin目录中标准的ftplugin。

感谢@pevik修复丢失的逗号。不确定为什么更改被拒绝,但我手动添加了。