![防止在 Spacemacs 或 VI 中切换覆盖模式](https://linux22.com/image/98686/%E9%98%B2%E6%AD%A2%E5%9C%A8%20Spacemacs%20%E6%88%96%20VI%20%E4%B8%AD%E5%88%87%E6%8D%A2%E8%A6%86%E7%9B%96%E6%A8%A1%E5%BC%8F.png)
我讨厌 VI 中的覆盖模式。我实际上从来不想覆盖,我只是想在键入之前按插入键确认我处于插入模式,无论我之前处于什么状态,而不用担心我可能会切换覆盖模式。
有没有办法将 vi 配置为永远不会切换到覆盖模式?那么插入键总是会切换插入模式吗?
我正在使用 Spacemacs,所以如果有人知道如何在 Spacemacs 中执行此操作,那将是最好的,但如果我无法获得 VI 语法,我确信我可以弄清楚如何将 vi 配置添加到我的 Spacemacs 配置文件中(我我现在对 Spacemacs 还很陌生)。
答案1
我相信您指的是替换模式。我面前没有 VI 来测试这一点。尝试一下它是否适合您:
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
你为什么要使用insert
键盘上的按键?只需按i
。 (它永远不会将您切换到替换模式。最坏的情况是它会键入字母“i”,您可以按退格键。)
此外,当您处于插入模式时,屏幕底部vi
会有一个小状态栏,显示“INSERT”。
Emacs 和vi
是非常不同,所以看到一个问题要求在两者上同样可行的解决方案有点奇怪。
如果您主要使用插入模式,vi
您可能需要了解有关正常模式的更多信息。