1

给定以下简单的 Makefile:

#Makiefile
ifeq(,)
else
endif

根据这个,只需包含这个 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\>'
4

2 回答 2

2

Makefiles 的文件类型是make. 在我最近的$VIMRUNTIME/ftplugin/make.vim(过时的2006 Jun 17)中,没有定义b:match_words.

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

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

于 2013-04-19T16:15:11.883 回答
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之前加载的,所以如果只是想在标准ftplugin之上构建ftplugin,~/.vim/ftplugin最好将自定义的ftplugin放在目录中。~/.vim/after/ftplugin

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

于 2013-04-30T12:38:38.570 回答