Проблема использования соответствия для такой задачи заключается в том, что она является локальной для активного окна, а не для редактируемого буфера. Я бы попробовал что-то вроде следующего:
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
fun! UpdateMatch()
if &ft !~ '^\%(html\|xml\)$'
match OverLength /\%81v.*/
else
match NONE
endif
endfun
autocmd BufEnter,BufWinEnter * call UpdateMatch()
По сути, вы хотите запускать каждый раз, когда изменяется буфер в текущем окне. На этом этапе вы оцениваете, какой тип файла имеет буфер, и настраиваете, должно ли совпадение быть активным или нет.
Если вы также хотите поддержать редактирование безымянного буфера и затем установить его тип файла (либо путем сохранения, либо вручную установив & ft), FileType даже следует добавить в список.