Я бы предложил использовать один вызов для matchadd
, а не добавлять несколько совпадений, так как они должны быть медленнее, а также позаботиться о ситуации, когда вы вызываете функцию во второй раз:
function DelMatches()
if exists('s:matchnr')
try
call matchdelete(s:matchnr)
catch /\V\^Vim(call):E803:/
" Ignore `ID not found' error
endtry
unlet s:matchnr
endif
endfunction
function MakeMatches()
call DelMatches()
let s:matchnr=matchadd("Search", '\V\<\%('.join(map(split(system("com"), "\n"), 'escape(v:val, "\\")'), '\|').'\)\>')
endfunction