当我在 html.erb 文件中时,我没有得到 snipMate 片段。
我想要 HTML 和 Ruby,或者只是 HTML 就可以了,我该怎么做?
我需要写一组片段吗?
如果是这样,有没有办法在不复制现有片段的情况下提取它们?
有没有办法告诉 vim 在看到 .html erb 时进入 html 模式?
当我在 html.erb 文件中时,我没有得到 snipMate 片段。
我想要 HTML 和 Ruby,或者只是 HTML 就可以了,我该怎么做?
我需要写一组片段吗?
如果是这样,有没有办法在不复制现有片段的情况下提取它们?
有没有办法告诉 vim 在看到 .html erb 时进入 html 模式?
autocmd
打开“.html.erb”文件时,您可以使用 an将文件类型设置为 html。这可能会对适用于“.erb”文件的插件产生不必要的副作用。
autocmd BufNewFile,BufRead *.html.erb set filetype=html
您还可以使用点分文件类型加载一组以上的片段:
autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby
有关更多信息,请参阅:help snippet-syntax
snipMate 帮助。
片段存储在文件夹中snippets
某处的~/.vim
目录中。
如果你看那里,通常每个文件类型都有一个文件,有一个 c.snippets,一个 ruby.snippets,所以看起来你要做的就是在那里创建一个你想要的 erb.snippets。
最终,您可以将 ruby.snippets 和 html.snippets 的内容复制到新的 erb.snippets 中。
或者你可以在 github 上搜索,有些人已经发布了他们自己的 erb.snippets 配置。例如,那里有一个不错的收藏: https ://github.com/scrooloose/snipmate-snippets
最好的办法是首先尝试打开一个片段文件并查看语法,根据您最常使用的内容创建自己的片段非常容易。
我目前正在 StackOverflow 上为UltiSnips进行宣传之旅。UltiSnips 支持扩展其他文件类型,你的 erb.snippets 看起来像这样:
extends html, ruby, rails
snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet
snipMate 片段的转换脚本随 UltiSnips 一起提供,因此切换很容易。
我使用自动命令方法来设置文件类型,但后来我遇到了 html 语法错误,如下所示:
<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>
最后两个尖括号将以红色突出显示,这让我发疯了。因此,我创建了一个名为 eruby.snippets 的符号链接,它指向 html.snippets。这就像一个冠军,现在我不必在两个地方做出改变。我还有一个用于非 html eruby 片段的 eruby-rails 片段目录。
这是在 Mac OS X 系统上。请注意,别名不起作用。您需要点击终端并使用 ln 命令。不确定在 Windoze 系统上执行此操作。
您可以将多个片段范围分配给单个文件类型。(我发现更改文件类型往往会破坏一些语法突出显示)。
您可以使用以下命令检查 erb 文件的文件类型是否确实是“eruby”:
:set filetype?
如果您使用的是 snipmate 的维护分支,看起来您需要来自 snipmate-snippets 存储库(由 honza 拥有,但我没有足够的声誉来链接)中的 eruby.snippets 和 eruby-rails.snippets到这里)(请参阅 snipmate README 的安装部分以了解正确的设置)。
如果您使用维护的 fork,我相信在您的 .vimrc 中设置 g:snipMate.scope_aliases 将适用于您的示例:
let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'
我已经向 snipmate 添加了一个拉取请求,以更新他们的文档。
在尝试了 SnipMate 一段时间后,加入了 UltiSnips 的潮流。就像 SirVer 提到的那样,在文件中提供 html、ruby 等片段就像在*.erb
文件中添加扩展行一样简单eruby.snippets
。
使用原始的snipMate插件,创建一个文件~/.vim/ftplugin/erb_snippets.vim
并将以下内容放入其中:
silent call ExtractSnipsFile(g:snippets_dir . 'html.snippets', &l:filetype)
silent call ExtractSnipsFile(g:snippets_dir . 'ruby.snippets', &l:filetype)