加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 混合两个语法高亮脚本

发布时间:2020-12-15 19:54:38 所属栏目:安全 来源:网络整理
导读:我写Jekyll的博客文章,为此我最终在同一个文件中使用三种不同的语言:YAML在开始的帖子元数据,Markdown在正文中,C代码片段。 我试图设置一个脚本,以便我可以使vim高亮显示所有三个适当的我,结果在这样的语法/ jekyll.vim中: " Build upon Markdown syn
我写Jekyll的博客文章,为此我最终在同一个文件中使用三种不同的语言:YAML在开始的帖子元数据,Markdown在正文中,C代码片段。

我试图设置一个脚本,以便我可以使vim高亮显示所有三个适当的我,结果在这样的语法/ jekyll.vim中:

" Build upon Markdown syntax
runtime! syntax/markdown.vim

" pretend there's no syntax loaded
unlet b:current_syntax
" Bring in YAML syntax for front matter
syntax include @Yaml syntax/yaml.vim
syntax region yamlFrontmatter start=/%^---$/ end=/^---$/ keepend contains=@Yaml

" pretend there's no syntax loaded
unlet b:current_syntax
" Bring in C++11 syntax for code snippets
syntax include @Cpp syntax/cpp.vim
syntax region cppCodeSnippet matchgroup=Comment start=/^{% highlight cpp %}$/ end=/^{% endhighlight %}$/ keepend contains=@Cpp

let b:current_syntax='jekyll'

我还设置了一个文件检测脚本来将ft设置为此语法。

几乎可以工作当我打开一个被检测为这种类型的文件时,除了C的亮点之外,我得到一切正确。但是,如果我键入:syn之后,一切都正常。我可以删除缓冲区并再次打开文件,所有的高亮都可以。如果我关闭vim并重新启动,我需要再次运行:syn。

我缺少什么?如何调试此问题?

快速修复:将语法附加到.vimrc的最后一行,这与在实时会话中设置:syn相同。

不是那么快:

看起来您可能已经在$ VIMRUNTIME中安装了默认语法文件中的自定义’jekyll’语法。

根据Vim wiki section on custom syntax,最好将所有个人定制保存在?/ .vim中。例如,将你的jekyll.vim语法放在?/ .vim / syntax /中。

Do not use a directory containing the files distributed with Vim because that will be overwritten during an upgrade (in particular,do not use the $VIMRUNTIME directory).

在Vim syntax docs:
:syntax enable running’:source $ VIMRUNTIME / syntax / DEFAULT_SYNTAX.vim’。
:syn on(或:syntax on)将“使用默认设置来推翻您的设置”。

因此,如果设置:syntax on使您的自定义语法工作,它必须包含在默认语法集中。

尝试保留所有的自定义的东西在?/ .vim,看看是否解决了问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读