是否可以在vim中禁用替换模式?

时间:2010-11-05 21:43:45

标签: vim replace

简单地说,如何在vim中完全禁用替换模式?我从不使用替换模式,但有时在重新进入插入模式时会偶然结束。当然,在实现我处于替换模式之前,我先键入几个字符。那么,有没有办法完全禁用替换模式,无论是通过配置设置还是?

5 个答案:

答案 0 :(得分:14)

您无法禁用替换模式,但您可以进行自动命令,将替换和虚拟替换模式更改回插入模式:

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

答案 1 :(得分:3)

不确定这是否是最好的方法,但您可以将.r和r映射到.vimrc中的任何内容:

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

编辑:或者:

map R <Nop>
map r <Nop>

答案 2 :(得分:3)

只需添加.vimrc imap <Insert> <Nop>

即可

这就够了

答案 3 :(得分:3)

我发现这个解决方案更好。插入键进入插入模式工作,但第二次插入命中的替换模式被禁用。将下两行放入.vimrc

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

(由garyjohn @ superuser网站提及)

答案 4 :(得分:0)

使用 I 键进入Insert而不是使用 Insert

这样你就不会重新进入插入模式