我有一个像这样的文件:
:: JavaScript
function whatIsThis(){
return "an example";
}
:: Haskell
main = putStrLn "is this is an example?"
:: C
#include <stdio.h>
int main(){
printf("yes, it is");
};
换句话说,以::
开头的行确定下一行的语法,直到找到另一个::
。有没有办法配置vim以正确突出显示这些块的语法?
答案 0 :(得分:3)
看看我的SyntaxRange plugin;它提供了:[range]SyntaxInclude
命令,以及用于定义区域(基于开始和结束模式)以使用特定语法突出显示的功能。以你的例子:
call SyntaxRange#IncludeEx('start="^:: Haskell" end="^::"me=e-3', 'haskell')
call SyntaxRange#IncludeEx('start="^:: C" end="^::"me=e-3', 'c')
call SyntaxRange#IncludeEx('start="^:: JavaScript" end="^::"me=e-3', 'javascript')
答案 1 :(得分:1)
如果您希望为每个单独的部分(即文件类型特定的设置,自定义,映射,命令)具有完整的编辑功能,而不仅仅是特定的语法突出显示,那么您不会为每个片段设置单独的缓冲区(因为这些都与缓冲区的文件类型有关。)
使用NrrwRgn - A Narrow Region Plugin similar to Emacs,您可以将原始文件剪切为单独的缓冲区(例如在拆分窗口中显示),插件会自动将所有更改同步回原始文件。