我安装了bnf.vim(突出显示BNF语法文件)。
假设我的代码中有评论:
/* <BNF>
<S> := <A> | h
<A> := a | b | c | .
</BNF> */
Vim可以以某种方式编程,以BNF语法突出显示该注释,尽管整个文件的文件类型?
答案 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: