1

在 VIM (v7.2)\foo中加载默认语法方案后,如何突出显示一个特定 TeX 命令的所有实例?tex

如果没有预先加载语法方案,我可以轻松完成:

:syntax clear
:highlight myGroup ctermfg=blue
:syntax match myGroup "\\foo\>"

但是我不知道在tex加载语法方案时该怎么做。这不起作用:

:syntax clear
:set syntax=tex
:highlight myGroup ctermfg=blue
:syntax match myGroup "\\foo\>"

更新 1

实际上,它适用于序言中的命令,但不适用于document环境中的命令。

更新 2

一种解决方法是注释掉/usr/share/vim/vim72/syntax/tex.vim(v47) 中处理折叠的一些行:

" Sections, subsections, etc: {{{1
if g:tex_fold_enabled && has("folding")
 syn region texDocZone                  matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                     fold contains=@texFoldGroup,@texDocGroup,@Spell
 syn region texPartZone                 matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                                  fold contains=@texFoldGroup,@texPartGroup,@Spell
 syn region texChapterZone              matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                       fold contains=@texFoldGroup,@texChapterGroup,@Spell
 syn region texSectionZone              matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'            fold contains=@texFoldGroup,@texSectionGroup,@Spell
 syn region texSubSectionZone           matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'  fold contains=@texFoldGroup,@texSubSectionGroup,@Spell
 syn region texSubSubSectionZone        matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
 syn region texParaZone                 matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                       fold contains=@texFoldGroup,@texParaGroup,@Spell
 syn region texSubParaZone              matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'     fold contains=@texFoldGroup,@Spell
 syn region texTitle                    matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                            fold contains=@texFoldGroup,@Spell
 syn region texAbstract                 matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                                     fold contains=@texFoldGroup,@Spell
"else
" syn region texDocZone                 matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'                                                     contains=@texFoldGroup,@texDocGroup,@Spell
" syn region texPartZone                        matchgroup=texSection start='\\part\>'                   end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'                          contains=@texFoldGroup,@texPartGroup,@Spell
" syn region texChapterZone             matchgroup=texSection start='\\chapter\>'                end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'                       contains=@texFoldGroup,@texChapterGroup,@Spell
" syn region texSectionZone             matchgroup=texSection start='\\section\>'                end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'            contains=@texFoldGroup,@texSectionGroup,@Spell
" syn region texSubSectionZone          matchgroup=texSection start='\\subsection\>'             end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'  contains=@texFoldGroup,@texSubSectionGroup,@Spell
" syn region texSubSubSectionZone       matchgroup=texSection start='\\subsubsection\>'          end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
" syn region texParaZone                        matchgroup=texSection start='\\paragraph\>'              end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'                       contains=@texFoldGroup,@texParaGroup,@Spell
" syn region texSubParaZone             matchgroup=texSection start='\\subparagraph\>'           end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'     contains=@texFoldGroup,@Spell
" syn region texTitle                   matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'                                                                            contains=@texFoldGroup,@Spell
" syn region texAbstract                        matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'                                             contains=@texFoldGroup,@Spell
endif
4

1 回答 1

1

问题是存在现有的语法突出显示,因此您:syntax match没有应用。您需要找出哪个原始语法组在其中突出显示了它contain。这对我有用:

:syntax match myGroup "\\foo\>" containedin=texStatement
于 2013-01-05T12:18:05.160 回答