2010-11-05 39 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 @超級用戶的網站提到)

相關問題