gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:02:57 26 4
gpt4 key购买 nike

我用 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 on之后,一切正常。我可以删除缓冲区并再次打开文件,所有亮点都可以。如果我关闭 vim 并重新启动它,我需要运行 :syn on再次。

我错过了什么?我该如何调试这个问题?

最佳答案

快速修复:附加 syntax on到您 .vimrc 的最后一行,与设置 :syn on 相同在直播 session 中。

没那么快:

看起来您可能已经在 $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运行 ':source $VIMRUNTIME/syntax/DEFAULT_SYNTAX.vim'。 :syn on (或 :syntax on )将“使用默认值否决您的设置”。

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

尝试将所有自定义内容保留在 ~/.vim 中看看这是否能解决问题。

关于vim - 混合两个语法高亮脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com