You mentioned you are using the paredit plugin.
If you look into the plugin, you can see, that the DEL Key is mapped to the function PareditEraseFwd.
This function will later call s:EraseFw and if you look closely into the definition you see that in your case it will do this:
elseif pos < len(line) && pos >= a:startcol
" Erasing a non-special character
let reg = reg . line[pos]
let line = strpart( line, 0, pos ) . strpart( line, pos+1 )
strpart() function works with byte indices, so it will just remove a single byte instead of a single letter.
You should most likely contact the maintainer of the plugin mentioned at the top of the file to have this fixed (one could for example use a combination of
join() using the
. to get character indices). When you talk to the maintainer, you should probably also mention that it would be desirable to let the user configure, whether or not he wants certain keys to be mapped (so you could prevent the plugin from mapping the DEL key at all, unfortunately, this is not possible currently).
(Unrelated, to that, it looks like the plugin should be rather distributed as filetype specific plugin instead of a general purpose plugin. So this is something else to be considered by the maintainer of the plugin).
However for a quick solution, you could create a file ~/.vim/after/ftplugin/scheme.vim (create non existing directories) and add
" prevent errors, in case of del being not mapped
" a nicer solution would just check if the key is being mapped
" using `mapcheck("<del>", 'n')
:sil! unmap <buffer> <del>
Or you could disable the whole plugin by setting
:let g:paredit_mode=0 into your
.vimrc file (which effectively disables the plugin completely. But then you could also just uninstall the plugin).
Also note, that the vim-scripts mirror on github is currently unmaintained and the latest version of the paredit plugin on vim.org is actually 0.9.13 while the github mirror only has the [0.9.12 version].
Actually, it looks like version 0.9.13 fixes your problem. Quoting from the changes of the vim.org page (emphasized by myself):
Always leave cursor to opening char's pos after wrapping selection.
Fix possible cursor move problem caused by &indentexpr when using the
Bugfix: 2 keymaps assumed g:paredit_leader is identical to ','.
Fix for paredit 'x' and 'X' when clipboard=unnamed.
Added support for hy.
Use instead of mapleader.
Enhanced detection of forms balanced state.
Unescaped square brackets in balance detection.
Bugfix: pressing (for completion) followed by ')'.
Remove invalid uses of
Fixed problem with 'x' and 'X' commands when erasing multi-byte unicode character.
Fix Paredit burfing (by moving parens left or right) when there are
stings as elements.
Added paredit support for shen language.
Do not skip parens after \ when searching for pairs.