繁体   English   中英

Vim html.erb代码片段? snipMate需要vim提示

[英]Vim html.erb snippets?? snipMate Need a vim tip

当我使用html.erb文件时,没有任何snipMate片段。

我想同时使用HTML和Ruby,或者只使用HTML就可以了,我该怎么做?

我需要写一些片段吗?

如果是这样,是否有办法在不复制现有摘要的情况下提取它们?

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

打开“ .html.erb”文件时,可以使用autocmd将文件类型设置为html。 对于适用于“ .erb”文件的插件,这可能会产生有害的副作用。

autocmd BufNewFile,BufRead *.html.erb set filetype=html

您还可以通过使用点分文件类型来加载一组以上的摘要:

autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby

有关更多信息,请参见snipMate帮助中的:help snippet-syntax

片段存储在目录中称为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一起提供,因此切换很容易。

我使用了autocommand方法来设置文件类型,但是随后出现类似以下内容的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的INSTALL部分以了解正确的设置)。

如果您使用的是维护的分叉,我相信在您的.vimrc中使用以下设置g:snipMate.scope_aliases将适用于您的示例:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['eruby'] = 'eruby,eruby-rails'

我添加了请求请求以使它们的文档更新。

尝试了一段时间后,跳上UltiSnips潮流。 像SirVer所提到的,具有HTML,红宝石等网页摘要内的可用*.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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM