gpt4 book ai didi

html - 自定义 Vim HTML 语法

转载 作者:太空狗 更新时间:2023-10-29 14:21:34 26 4
gpt4 key购买 nike

我有一个脚本可以读取 HTML 文件并用 Perl 设置的值替换 ~%foo%~ 的出现。像这样:

<span class="~%classname%~">~%hi_mom%~</span>

会在浏览器中产生这样的东西:

<span class="classyclass">Hello World</span>

对,所以我想使用 Vim 语法高亮来区分 HTML 中出现的 ~%foo%~。默认情况下,HTML 语法突出显示将使 HTML 元素的属性值变为 Magenta,我希望 ~%foo%~ 部分为 DarkMagenta。我走在正确的轨道上,因为如果我注释掉 tokenQuoted 行(或标记行),我会得到想要的结果,但是匹配项和突出显示都未注释,标记突出显示会覆盖 tokenQuoted 突出显示。

syntax match token       containedin=ALLBUT,htmlString,htmlValue '\~%[^%]\+%\~'
syntax match tokenQuoted containedin=htmlString,htmlValue '\~%[^%]\+%\~'
" tokenQuoted assumes htmlString/htmlValue (:highlight String) is Magenta
highlight token term=none ctermfg=White guifg=White
highlight tokenQuoted term=none ctermfg=DarkMagenta guifg=DarkMagenta

我正在使用的文件是在默认 html.vim 来源之后获取的autocmd *.html ~/.vim/syntax/html.vim.vimrc 中。

最佳答案

问题是 token 匹配没有被排除在 tokenQuoted 匹配之外。要获得所需的结果,即突出显示与非引用标记不同的引用标记,请在语法文件中使用以下内容。

syntax match token       containedin=ALLBUT,htmlString,htmlValue,tokenQuoted '\~%[^%]\+%\~'
syntax match tokenQuoted containedin=htmlString,htmlValue '\~%[^%]\+%\~'
highlight token term=none ctermfg=White guifg=White
highlight tokenQuoted term=none ctermfg=DarkMagenta guifg=DarkMagenta

或者,如果使用语法区域而不是匹配有意义,请将上面的语法匹配行替换为以下内容。

syntax region token       contained start=+\~%+ end=+%\~+ containedin=ALLBUT,htmlString,tokenQuoted
syntax region tokenQuoted contained start=+\~%+ end=+%\~+ containedin=htmlString

我想我还应该提到,当我测试这个时,我刚刚创建了文件 ~/.vim/syntax/html.vim 并添加了上述内容。无需向我的 .vimrc 文件添加任何内容。

关于html - 自定义 Vim HTML 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267205/

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