这个史诗般的问题中的几个用户将以下内容放入.vimrc
:
" Necesary for lots of cool vim things
set nocompatible
Run Code Online (Sandbox Code Playgroud)
但这真的有必要吗?来自文档:
'compatible' 'cp'
boolean (default on, off when a |vimrc| or |gvimrc| file is found)
Run Code Online (Sandbox Code Playgroud)
如果set nocompatible
进入a .vimrc
,这意味着.vimrc
文件存在,似乎使它毫无意义.
R. *_*des 57
如果它是系统范围的vimrc,则此选项不会关闭.因此,如果您正在更改系统范围的vimrc而您想要它,则需要进行设置.
从文档部分*compatible-default*(强调我的):
当Vim启动时,'compatible'选项打开.这将在Vim开始初始化时使用.但是一旦找到用户vimrc文件,或者当前目录中的vimrc文件,或者设置了"VIMINIT"环境变量,它就会被设置为'nocompatible'.
另一个区别是显式设置'nocompatible'覆盖调用带有-C标志的 vim .
在任何其他情况下,是的,在你的vimrc中设置'nocompatible'是一个noop.
最后,我认为这只是"更安全而不是抱歉"的问题.
Cha*_*ers 19
许多人在GitHub上共享他们的.vimrc文件,我有时会测试设置而不替换我的.vimrc文件.vim允许我使用-u标志执行此操作.
vim -u test_vimrc
Run Code Online (Sandbox Code Playgroud)
来自vim":help nocompatible"
(注意:系统范围的vimrc或gvimrc文件不会发生这种情况,也不会发生| -u |参数给出的文件).
这意味着如果您与某人共享.vimrc并且他们使用-u标志来加载您的文件,则vim将不会像文件名为.vimrc并且位于您的主目录中一样配置.
我在Windows VM上使用了Cygwin中的vim,每次我都处于插入模式时,按箭头键会导致vim在屏幕上打印"A","B","C"或"D"而不是滚动.我发现一个论坛说将vim置于nocompatible模式会修复它.谢天谢地,它做到了.
我在我的〜/ .vimrc文件中放了"set nocompatible",问题仍然存在.所以也许它不是100%无用的.