" Vim :syntax command syn match testMatch "pattern" contained " tail comment " NOTE: comments not currently supported syn keyword testKeyword keyword contained " tail comment syn region testRegion start="start-pattern" skip="skip-pattern" end="end-pattern" contained " tail comment " Multiline commands syn keyword testKeyword "\ OPTIONS "\ conceal option \ conceal "\ cchar option \ cchar=& "\ contained option \ contained "\ containedin option \ containedin=testContainer "\ nextgroup option \ nextgroup=testNext0,@testCluster "\ transparent option \ transparent "\ skipwhite option \ skipwhite "\ skipempty option \ skipempty "\ skipnl option \ skipnl "\ KEYWORDS LIST "\ keyword 1 \ keyword1 "\ keyword 2 \ keyword2 "\ keyword 3 \ keyword3 syn match testMatch "\ MATCH PATTERN "\ pattern start \ / "\ part 1 description \pat1a .* pat1b "\ part 2 description \pat2a .* pat2b "\ part 3 description \pat3a .* pat3b "\ pattern end \/ "\ OPTIONS "\ conceal option \ conceal "\ cchar option \ cchar=& "\ contained option \ contained "\ containedin option \ containedin=testContainer "\ nextgroup option \ nextgroup=testNext0,@testCluster "\ transparent option \ transparent "\ skipwhite option \ skipwhite "\ skipempty option \ skipempty "\ skipnl option \ skipnl "\ contains option \ contains=testContained1,testContained2 "\ fold option \ fold "\ display option \ display "\ extend option \ extend "\ excludenl option \ excludenl "\ keepend option \ keepend syn region testRegion "\ OPTIONS "\ start option \ start="start-pattern" "\ skip option \ skip="skip-pattern" "\ end option \ end="end-pattern" "\ conceal option \ conceal "\ cchar option \ cchar=& "\ contained option \ contained "\ containedin option \ containedin=testContainer "\ nextgroup option \ nextgroup=testNext0,@testCluster "\ transparent option \ transparent "\ skipwhite option \ skipwhite "\ skipempty option \ skipempty "\ skipnl option \ skipnl "\ contains option \ contains=testContained1,testContained2 "\ oneline option \ oneline "\ fold option \ fold "\ display option \ display "\ extend option \ extend "\ concealends option \ concealends "\ excludenl option \ excludenl "\ keepend option \ keepend syn cluster testCluster "\ OPTIONS "\ contains option \ contains=testContained1,testContained2,testContained3 syn cluster testCluster "\ OPTIONS "\ add option \ add=testAdd "\ remove option \ remove=testRemove " multiline group list syn keyword testNext0 keyword syn keyword testNext1 keyword syn keyword testNext2 keyword syn keyword testNext3 keyword syn keyword testNext4 keyword syn keyword testNext5 keyword syn keyword testNext6 keyword syn keyword testNext7 keyword syn keyword testNext8 keyword syn keyword testNext9 keyword syn keyword testKeyword "\ nextgroup option \ nextgroup= "\ a comment \ testNext0 , testNext1 , "\ a comment \ testNext[2-8].* , "\ a comment \ testNext9 , @testCluster skipwhite "\ KEYWORDS LIST \ keyword4 \ keyword5 \ keyword6 " leaking contained groups " Example: runtime/syntax/zsh.vim " "cluster" should not be highlighted outside of :syntax commands function! s:ContainedGroup() " ... for cluster in ['markdownHighlight_zsh', 'zsh'] " ... endfor " ... endfunction