13

当我在 html.erb 文件中时,我没有得到 snipMate 片段。

我想要 HTML 和 Ruby,或者只是 HTML 就可以了,我该怎么做?

我需要写一组片段吗?

如果是这样,有没有办法在不复制现有片段的情况下提取它们?

有没有办法告诉 vim 在看到 .html erb 时进入 html 模式?

4

7 回答 7

17

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-syntaxsnipMate 帮助。

于 2011-01-11T14:51:00.153 回答
12

片段存储在文件夹中snippets某处的~/.vim目录中。

如果你看那里,通常每个文件类型都有一个文件,有一个 c.snippets,一个 ruby​​.snippets,所以看起来你要做的就是在那里创建一个你想要的 erb.snippets。

最终,您可以将 ruby​​.snippets 和 html.snippets 的内容复制到新的 erb.snippets 中。

或者你可以在 github 上搜索,有些人已经发布了他们自己的 erb.snippets 配置。例如,那里有一个不错的收藏: https ://github.com/scrooloose/snipmate-snippets

最好的办法是首先尝试打开一个片段文件并查看语法,根据您最常使用的内容创建自己的片段非常容易。

于 2011-01-11T14:51:07.290 回答
8

我目前正在 StackOverflow 上为UltiSnips进行宣传之旅。UltiSnips 支持扩展其他文件类型,你的 erb.snippets 看起来像这样:

extends html, ruby, rails

snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet

snipMate 片段的转换脚本随 UltiSnips 一起提供,因此切换很容易。

于 2011-07-27T05:54:07.760 回答
3

我使用自动命令方法来设置文件类型,但后来我遇到了 html 语法错误,如下所示:

<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>

最后两个尖括号将以红色突出显示,这让我发疯了。因此,我创建了一个名为 eruby.snippets 的符号链接,它指向 html.snippets。这就像一个冠军,现在我不必在两个地方做出改变。我还有一个用于非 html eruby 片段的 eruby-rails 片段目录。

这是在 Mac OS X 系统上。请注意,别名不起作用。您需要点击终端并使用 ln 命令。不确定在 Windoze 系统上执行此操作。

于 2011-03-17T18:55:13.133 回答
2

您可以将多个片段范围分配给单个文件类型。(我发现更改文件类型往往会破坏一些语法突出显示)。

您可以使用以下命令检查 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 添加了一个拉取请求,以更新他们的文档。

于 2012-01-07T22:38:02.130 回答
1

在尝试了 SnipMate 一段时间后,加入了 UltiSnips 的潮流。就像 SirVer 提到的那样,在文件中提供 html、ruby 等片段就像在*.erb文件中添加扩展行一样简单eruby.snippets

于 2012-03-05T01:21:50.420 回答
0

使用原始的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)
于 2012-10-27T19:20:45.287 回答