如何在vim中为缩进块分配特殊语法荧光灯?

如何在vim中为缩进块分配特殊语法荧光灯?,vim,syntax-highlighting,vim-syntax-highlighting,Vim,Syntax Highlighting,Vim Syntax Highlighting,为了方便对couchdb函数进行分组 我创建了一种文件格式,使用yaml将不同的内容分组在一起 它基本上包含name.ext:| 后跟适合.ext语言的预期代码块 为了进行更愉快的编辑,我希望vim为它们使用正确的语法高亮 编辑 根据要求提供一些代码示例 简单: map.coffee: | (doc) -> for item in doc.items: emit [doc.category, item], null return reduce: _count

为了方便对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

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

你有一个明确的开始,但没有明确的结束,也许你可以在这里建立一些惯例,比如“结尾有两个空的新行”

有一些类似的答案可能会提示您(包括文档)如何实施解决方案,例如:


另一个有趣且类似的方法是Vimtip:

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


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

显示了特殊情况的可能起点。请提供更多详细信息,可能包括一些代码作为示例?