Можно удалить только те ярлыки, которые были определены с помощью *map
, встроенные команды могут быть переопределены, но не очищаемы.Если вам нужно отключить определенную команду, вам нужно будет выполнить noremap <Key> <Nop>
, следующий код должен отключить их все (но учтите, что она переопределяет, ничего не удаляя):
function s:hsescape(str)
return substitute(substitute(substitute(substitute(a:str,
\ ' ', '<Space>', 'g'),
\ '|', '<Bar>', 'g'),
\ "\n", '<CR>', 'g'),
\'\c^<\%(buffer\|silent\|expr\|special\)\@=', '<LT>', '')
endfunction
for s:mode in ['n', 'x', 'o']
for s:char in map(range(0, 0x7F), 'nr2char(v:val)')
execute s:mode.'noremap '.s:hsescape(s:char).' <Nop>'
endfor
endfor
for s:mode in ['s', 'i', 'c']
for s:char in map(range(0, 0x3F), 'nr2char(v:val)')
execute s:mode.'noremap '.s:hsescape(s:char).' <Nop>'
endfor
endfor
Обратите внимание, что это должно бытьсразу за ним следует код, который определяет некоторые сопоставления (или удаляет некоторые из <Nop>
), или вы сделаете ваш vim бесполезным.