2010-11-05 73 views
13

简单地说,我怎样才能在vim中完全禁用Replace模式?我从来没有使用过替换模式,但是当重新进入插入模式时,我有时会不小心误入了它。很自然地,在意识到我处于替换模式之前,我打字输入了几个字符。那么,是否有任何方法可以完全禁用替换模式,无论是通过配置设置还是通过?是否可以在vim中禁用Replace模式?

+0

对于什么是值得的,我用Google搜索,并通过对SO其他一些问题去了,找不到这个要求或回答,也许我是唯一一个不使用替换模式并希望摆脱它的人,或者我的谷歌软件太弱。 – coderintherye 2010-11-05 21:44:27

+1

那么你将如何替换单个字符?这是非常有用的:) – 2010-11-06 08:43:41

+1

@Nicolas Viennot你可以用'r'替换单个字符,这个命令与替换模式无关。 – ZyX 2010-11-06 09:09:43

回答

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 
+0

谢谢。我明天将在工作中尝试一下,看看它是如何发展的。 – coderintherye 2010-11-08 08:43:45

+0

这很好,谢谢!只是给其他用户一个额外的提示,上面的代码通常会放在你的.vimrc文件中,至少这是我为我的。 – coderintherye 2010-11-08 20:15:36

+0

这比'imap '更好吗?它似乎有相同的效果 – istepaniuk 2015-02-12 11:28:29

3

不知道这是最好的方式,但你可以在你的.vimrc映射R和r落空:

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

编辑:或者这样:

map R <Nop> 
map r <Nop> 
+4

您应该阅读':help '。 – 2010-11-05 22:11:18

+1

感觉好多了,谢谢!我将编辑我的回答 – 2010-11-05 22:14:00

+1

当插入模式被更改为''或当您使用'gR'(虚拟替换)进入替换模式时,这不起作用。 – ZyX 2010-11-06 08:47:19

-1

使用键进入插入,而不是使用插入关键

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

3

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

这将是足够

2

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

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

(由garyjohn @超级用户的网站提到)

相关问题