vim html.erb摘要??狙击手需要一个vim尖端
-
09-10-2019 - |
题
当我在html.erb文件中时,我没有狙击片段。
我想要HTML和Ruby,或者只是HTML会没事的,我该怎么做?
我需要写一组片段吗?
如果是这样,是否有一种方法可以在不复制它们的情况下拔出现有片段?
当看到.html ERB时,是否有一种方法告诉VIM进入HTML模式?
解决方案
摘要存储在名录中 snippets
你的某个地方 ~/.vim
文件夹。
如果您在那里看,通常每个FileType都有一个文件,则有一个C.snippets,一个Ruby.Snippets,因此您似乎要做的就是用所需的东西创建一个Erb.snippets。
最终,您可以将Ruby.snippets和html.snippets的内容复制到新的erb.snippets中。
另外,您可以在GitHub上搜索,有些人已经发布了自己的ERB.Snippets配置。例如,那里有一个不错的收藏:https://github.com/scrooloose/snipmate-snippets
最好的事情是首先尝试打开摘要文件并查看语法,根据您使用最多的内容,可以很容易地创建自己的摘要。
其他提示
您可以使用 autocmd
打开“ .html.erb”文件时,将FileType设置为HTML。对于适用于“ .erb”文件的插件可能会产生不良的副作用。
autocmd BufNewFile,BufRead *.html.erb set filetype=html
您还可以使用虚拟果皮类型加载多组片段:
autocmd BufNewFile,BufRead *.html.erb set filetype=html.eruby
看 :help snippet-syntax
在狙击手帮助中,以获取更多信息。
我目前正在促销 Ultisnips 在stackoverflow上。 Ultisnips支持扩展其他文件类型,您的erb.snippets看起来像这样:
extends html, ruby, rails
snippet temp "A snippet only in Erb"
erb rules ${1}
endsnippet
狙击片段的转换脚本是用Ultisnips运输的,因此切换很容易。
我使用AutoCommand方法来设置FileType,但是后来我对这样的内容进行了HTML语法错误:
<%= image_tag("logo.png", :alt => "Sample App", :class => "round") %>
最后两个角括号将以红色突出显示,这使我发挥了作用。因此,我创建了一个称为eruby.snippets的符号链接,指向html.snippets。这像冠军一样工作,现在我不必在两个地方进行更改。我还为非HTML Eruby摘要有一个Eruby-Rails摘要目录。
这是在Mac OS X系统上。请注意,别名行不通。您需要点击终端并使用LN命令。不确定在Windoze系统上这样做。
您可以将多个片段示波器分配给单个Filetype。 (我发现更改Filetype倾向于打破一些语法突出显示)。
您可以检查ERB文件的FILETYPE确实是“ Eruby”的:
:set filetype?
如果您正在使用 维持狙击手的叉子, ,看来您会同时需要Eruby.snippets和Eruby-rails.snippets。来自Snipmate-Snippets存储库(由Honza拥有,但我没有足够的声誉来链接到此处)(请参阅此处的安装部分)狙击手读数为正确的设置)。
如果您使用的是维护的叉子,我相信在.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,Ruby等摘要 *.erb
文件就像将扩展线添加到 eruby.snippets
文件。
与原始 狙击手 插件,创建一个文件 ~/.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)