2 Stimmen

Verhinderung der Neudefinition bestehender Pufferkartierungen

Ich möchte verhindern *noremap Befehl eine vorhandene Sequenz neu zuordnen, aber nur, wenn diese Sequenz lokal im Puffer liegt:

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

1voto

ZyX Punkte 50799

Mit neuerem vim kann man maparg() mit viertem Argument:

let oldmap=maparg('a', '', 0, 1)
if empty(oldmap) || !oldmap.buffer
    noremap <buffer> a c
endif

oder besser (unterstützt auch älteren vim), erfordert aber 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X