Es gibt keine spezielle Option dafür; Sie haben ein Muster, das optional die spezifischen Zeichen zwischen JEDEM Zeichen erlaubt; Beispiel mit foo
:
f[,_-]*o[,_-]*o
anzumerken, dass -
am Ende des []
Block platziert (siehe :h /[]
) werden muss.
Wie anspruchsvoll ist, zu schreiben, können Sie eine Funktion erstellen, um es für Sie:
func! CreatePattern(word)
let l:s = ''
let l:first = 1
for i in range(len(a:word))
if !l:first
let l:s .= '[,_-]*'
else
let l:first = 0
endif
let l:s .= a:word[i]
endfor
return l:s
endf
Danach haben wir:
:echo CreatePattern('bar')
b[,_-]*a[,_-]*r
Dann Sie :syn match
mit der Verwendung können Hilfe :execute
:
:exe 'syn match MyHighlightGroup /'.CreatePattern('foo').'/'
oder mit matchadd()
:
:call matchadd('MyHighlightGroup', CreatePattern('foo'))
Bitte beachten Sie, dass die Funktion oben nur mit einfachen Worten arbeiten, aber es wird jedes Muster bricht mit speziellen Mustern Zeichen enthält. Sie müssen möglicherweise eine bessere Funktion für solche Bedürfnisse schreiben.
Vielen Dank - die Verwendung einer benutzerdefinierten Funktion scheint hier die beste Lösung zu sein. – afl