2

我正在使用 MacVim 编辑 Chef 食谱,我真的很喜欢gf(转到文件)命令来打开同一食谱中的其他 Chef 食谱。

如果您的解决方案也可以在其他厨师食谱中打开食谱,则超级额外奖励积分。

所以给定这样的目录结构:

1. cookbooks/mycookbook/recipes/default.rb
2. cookbooks/mycookbook/recipes/foo.rb
3. cookbooks/mycookbook/recipes/bar.rb
4. cookbooks/apache2/recipes/default.rb
5. cookbooks/apache2/recipes/mod-ssl.rb

mycookbook/recipes/default.rb包含这个:

include_recipe 'mycookbook::foo'
include_recipe 'mycookbook::bar'
include_recipe 'apache2'
include_recipe 'apache2::mod_ssl'

我希望 Vim 的gf命令能够打开上面列出的食谱。

方法:

path基本上,如果当前 Ruby 文件的父目录结构类似于,我正在考虑对 Ruby 文件使用 setlocal 来设置变量cookbooks/<cookbook name>/recipes/,但我不知道该怎么做。

对于简单的解决方案,您只需将当前文件的父目录(recipes)添加到path当前文件的父路径为cookbooks/<cookbook name>/recipes/.

对于更全面的解决方案,您还需要添加cookbooks/<all cookbooks>/recipes/path变量中。

4

2 回答 2

1

所以在阅读了几个小时的 Vim 文档和谷歌搜索之后,我想出了这个 autocmd(为了便于阅读,分成两行:

" Make gf work on Chef include_recipe lines
" Add all cookbooks/*/recipe dirs to Vim's path variable
autocmd BufRead,BufNewFile */cookbooks/*/recipes/*.rb 
   \ setlocal path+=recipes;/cookbooks/**1
于 2013-01-07T05:35:45.297 回答
0

如果您可以为模板做同样的事情,那不是很酷吗?例如:

template "/etc/sudoers" do
  source "sudoers.erb"
end

sudoers.erb 上的 gf ,它将拉出 sudoers 模板,如果存在多个模板,则在拆分窗口中拉出它们!

于 2013-01-07T16:29:03.993 回答