С более новым vim можно использовать maparg()
с четвертым аргументом:
let oldmap=maparg('a', '', 0, 1)
if empty(oldmap) || !oldmap.buffer
noremap <buffer> a c
endif
или лучше (также поддерживает более старый vim), но требует frawor :
execute frawor#Setup('0.0', {'@/mappings': '0.0'})
let oldmap=s:_r.map.maparg('a', 'n', 0)
if empty(oldmap) || !oldmap.buffer
noremap <buffer> a c
endif