如何使用不同的语法语法高亮显示文件的一部分?

时间:2013-04-23 06:12:54

标签: vim

我安装了bnf.vim(突出显示BNF语法文件)。

假设我的代码中有评论:

/* <BNF>

<S> := <A> | h
<A> := a | b | c | .

</BNF> */

Vim可以以某种方式编程,以BNF语法突出显示该注释,尽管整个文件的文件类型?

3 个答案:

答案 0 :(得分:14)

您可以使用我的SyntaxRange plugin

明确指定范围,例如

:10,20SyntaxInclude bnf

或自动根据分隔模式:

:call SyntaxRange#Include('<BNF>', '</BNF>', 'bnf')

答案 1 :(得分:1)

对于许多文件类型,vim将使用heredoc名称作为线索。例如在php文件中,我经常在这里创建文档:

<?php 

$my_html = <<<html 
<h1>Solar</h1> 
<p>Is <em>good</em></p> 
html; 

$my_js = <<<javascript 
alert('yeah baby'); 
javascript; 

$my_sql = <<<sql 
SELECT user 
FROM mytable 
WHERE energy = 'solar'; 
sql; 

工作得很漂亮,唯一的问题是缩进是有问题的(结束标记不能有前面的空格)

答案 2 :(得分:0)

我的用例是在CloudFormation模板中突出显示内联Lambda函数。使用上述SyntaxRange plugin,我将其添加到了.vimrc

autocmd Syntax * call SyntaxRange#Include('vim: set ft=js:','vim: set ft=js:','javascript')

然后在我的模板中:

  Function:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: myFunction
      Code:
        ZipFile:
          !Sub |
            // vim: set ft=js:

            const aws = require('aws-sdk');
            const aws4 = require('aws4');
            const https = require('https');
            const zlib = require('zlib');

            ...

            // vim: set ft=js:

# vim: set ft=yaml: