Предотвращение переопределения существующего отображения буфера - PullRequest
2 голосов
/ 03 июля 2010

Я хочу запретить команде *noremap переотображать существующую последовательность, но только если эта последовательность является локальной для буфера:

noremap a b
" Will fail, must succeed
noremap <buffer> <unique> a c

noremap <buffer> a b
" Will fail, OK
noremap <unique> <buffer> a c

noremap a b
noremap <buffer> a c
" Will fail, OK
noremap <unique> <buffer> a d

1 Ответ

1 голос
/ 17 сентября 2011

С более новым 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
...