【问题标题】:Vim html.erb snippets?? snipMate Need a vim tipVim html.erb 片段?? snipMate 需要一个 vim 技巧
【发布时间】:2011-01-11 14:38:38
【问题描述】:

当我在 html.erb 文件中时,我没有得到 snipMate sn-ps。

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

我需要写一套sn-ps吗?

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

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

【问题讨论】:

    标签: ruby-on-rails vim code-snippets erb snipmate


    【解决方案1】:

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

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

    您还可以使用点分文件类型加载多组 sn-ps:

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

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

    【讨论】:

    【解决方案2】:

    片段存储在您的~/.vim 文件夹中某个名为snippets 的目录中。

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

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

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

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

    【讨论】:

    • 太棒了,谢谢.. erb-rails 缺少 html 标签,所以我将它们复制进去!谢谢。
    • 你是怎么做到的?我已将 erb.sn-ps 添加到 sn-ps 文件夹并添加了一些 sn-ps,但仍然显示“找不到模式”,而 snipmate 与 .c .rb 和其他本机支持的文件完美配合。
    • 这看起来需要通过 github.com/scrooloose/snipmate-snippets/blob/master/ruby-rails/… 进行重构。我宁愿使用 respond_with,所以我正在开发一些新的 sn-ps。
    【解决方案3】:

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

    extends html, ruby, rails
    
    snippet temp "A snippet only in Erb"
    erb rules ${1}
    endsnippet
    

    UltiSnips 附带了一个用于 snipMate sn-ps 的转换脚本,因此切换很容易。

    【讨论】:

    • 那么,为什么不在 eruby 的 ultisnips 中包含扩展行呢?
    • 我对 ruby​​、eruby、erb 或任何其他 html 或 Web 相关的编码内容一无所知。所以 - 我需要依靠用户在这里提供有用的 sn-p 定义和 .sn-p 文件。随意发送补丁。
    【解决方案4】:

    我使用自动命令方法来设置文件类型,但随后我得到了类似这样的 html 语法错误:

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

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

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

    【讨论】:

      【解决方案5】:

      您可以将多个 sn-ps 范围分配给单个文件类型。 (我发现改变文件类型往往会破坏一些语法高亮)。

      您可以使用以下命令检查 erb 文件的文件类型是否确实是 'eruby':

      :set filetype?
      

      如果您使用的是maintained fork of snipmate,看起来您需要来自 snipmate-sn-ps 存储库(由 honza 拥有,但我没有足够的声誉在此处链接到它)(请参阅 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 添加了一个 pull request 以更新他们的文档。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          使用原版 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)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-10
            • 1970-01-01
            • 2010-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多