And*_*ohn 7 html vim syntax-highlighting vim-syntax-highlighting
我有一个脚本,它读取HTML文件并用~%foo%~Perl设置的值替换出现的内容.像这样的东西:
<span class="~%classname%~">~%hi_mom%~</span>
Run Code Online (Sandbox Code Playgroud)
会在浏览器中产生这样的东西:
<span class="classyclass">Hello World</span>
Run Code Online (Sandbox Code Playgroud)
是的,所以我想使用Vim语法高亮来区分~%foo%~HTML中的出现.默认情况下,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
Run Code Online (Sandbox Code Playgroud)
我正在使用的文件是在默认html.vim通过
autocmd *.html ~/.vim/syntax/html.vimin 来源后获取的.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
Run Code Online (Sandbox Code Playgroud)
或者,如果使用语法区域而不是匹配更有意义,请将上面的语法匹配行替换为以下内容。
syntax region token contained start=+\~%+ end=+%\~+ containedin=ALLBUT,htmlString,tokenQuoted
syntax region tokenQuoted contained start=+\~%+ end=+%\~+ containedin=htmlString
Run Code Online (Sandbox Code Playgroud)
我想我还应该提到,当我测试这个时,我刚刚创建了文件~/.vim/syntax/html.vim并添加了上述内容。无需向我的 .vimrc 文件添加任何内容。
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |