如果文件的父路径树是cookbooks / foo / recipes,如何设置Vim的'路径'?

时间:2013-01-04 05:54:09

标签: vim chef

我使用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变量。

2 个答案:

答案 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模板,如果存在多个模板,请在拆分窗口中将它们拉出来!