我使用MacVim编辑Chef cookbook,我非常喜欢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
命令能够打开上面列出的食谱。
基本上,如果当前Ruby文件的父目录结构类似于path
,我正在考虑使用setlocal来设置cookbooks/<cookbook name>/recipes/
变量的Ruby文件,但是我&#39 ;我不知道该怎么做。
对于简单的解决方案,如果当前文件的父路径为path
,您可以将当前文件的父目录(配方)添加到cookbooks/<cookbook name>/recipes/
。
要获得更全面的解决方案,您还需要将cookbooks/<all cookbooks>/recipes/
添加到path
变量。
答案 0 :(得分:1)
因此,经过几个小时的阅读Vim docs和Google搜索,我想出了这个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
答案 1 :(得分:0)
如果你能为模板做同样的事情,那会不会很酷?例如:
template "/etc/sudoers" do
source "sudoers.erb"
end
在pdo on sudoers.erb上它会拉出sudoers模板,如果存在多个模板,请在拆分窗口中将它们拉出来!