1

为了方便对 couchdb 函数进行分组,我创建了一种文件格式,使用 yaml 将单独的事物组合在一起

它基本上包含以下形式的条目,name.ext: | 后跟适合 .ext 的语言的预期代码块

为了更愉快的编辑,我想让 vim 为他们使用正确的语法荧光笔

编辑

根据要求提供一些代码示例

简单的:

map.coffee: |
  (doc) ->
    for item in doc.items:
     emit [doc.category, item], null
    return

reduce: _count

更复杂:

map.coffee: |
  (doc) ->
    emit doc.category, {items: 1, val: doc.value}
    return

reduce.coffee: |
  (keys, values, rereduce) ->
    ret = {items: 0, val: 0}
    for v in values
      ret.items += doc.items
      ret.val += doc.val
    return ret
4

2 回答 2

0

我相信您希望它利用 Vim 的语法区域 ( :help syn-region)。但是区域将分隔符作为参数。

您有一个明确定义的开始,但没有明确的结束,也许您可​​以通过在此处建立一些约定来解决问题,例如"2 empty new lines at the end"

有类似的答案可能会为您提供有关如何实现解决方案的提示(包括文档),例如:Embedded syntax highligting in Vim

同样有趣和类似的方法是这个 Vimtip:http: //vim.wikia.com/wiki/Different_syntax_highlighting_within_regions_of_a_file

于 2012-08-23T20:45:01.843 回答
0

您必须编写自己的语法文件,并为每个条目定义一个语法区域。在该区域内,您可以在语法中包含您的ext. 阅读所有详细信息:help :syn-include

如果这听起来太复杂,请查看我的 SyntaxRange 插件。它基于 alfredodeza 提到的 Vimtip。有了它,您可以快速将语法分配给一系列行,例如:11,42SyntaxInclude perl

于 2012-08-24T07:08:04.017 回答