Можно ли отключить режим замены в vim?

Проще говоря, как я могу полностью отключить режим Replace в vim? Я никогда не использую режим Replace, но иногда я попадаю в него случайно при повторном входе в режим Insert. Естественно, я добираюсь, набрав несколько символов, прежде чем осознать, что я вхожу в режим замены. Итак, есть ли способ полностью отключить режим замены, будь то через настройку конфигурации или однако?

Ответы

Ответ 1

Вы не можете отключить режим замены, но вы можете сделать автокоманды, которые изменят режим Replace и Virtual Replace обратно в режим Insert:

function s:ForbidReplace()
    if v:insertmode isnot# 'i'
        call feedkeys("\<Insert>", "n")
    endif
endfunction
augroup ForbidReplaceMode
    autocmd!
    autocmd InsertEnter  * call s:ForbidReplace()
    autocmd InsertChange * call s:ForbidReplace()
augroup END

Ответ 2

Не уверен, что это лучший способ, но вы можете сопоставить R и r ни с чем в вашем .vimrc:

map R <C-V><C-V>
map r <C-V><C-V>

Изменить: или это:

map R <Nop>
map r <Nop>

Ответ 3

Просто добавьте свой .vimrc imap <Insert> <Nop>

Этого будет достаточно

Ответ 4

Я нашел это решение лучше. Клавиша Insert для входа в режим вставки работает, но режим замены во втором ударе вставки отключен. Поместите следующие две строки в ваш .vimrc

imap <Insert> <Nop>
inoremap <S-Insert> <Insert>

(упомянутый сайтом garyjohn @superuser)

Ответ 5

Используйте клавишу I, чтобы перейти в Insert вместо клавиши Insert

Таким образом, вы не сможете повторно войти в режим вставки