为了确保行为不受我的个人配置影响,我想以一种忽略我所有用户安装的配置文件的方式启动Vim,就好像Vim刚被第一次全新安装并且用户已经运行了

这在FAQ中得到了解决,它提示答案是使用以下命令启动Vim:在那里,但是runtimepath选项仍然包含~/.vim,尤其是~/.vim/after(因此,例如,如果我随后打开文件类型检测并更改文件类型,则将执行~/.vim/after/syntax/the_relevant_filetype.vim中的代码)。可以通过在启动时调用以下命令来解决此特定问题:

vim -u NONE -U NONE -N -i NONE


...但是我不确定是否:


这是一个可靠的解决方案:是那些唯一可以使用户配置生效的路径吗?还有什么我没想到的吗?
有一种更好的方法可以达到预期的结果。

编辑:这是我要解决的这类问题的一个具体示例。 (尽管我希望该解决方案解决我可能尚未遇到的任何其他可能的问题。):



创建文件〜/ .vim / after / ftplugin /c.vim,其中包含以下内容:

:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after


现在我们有了一些用户安装的配置,我们要忽略。让我们测试一下FAQ提出的解决方案。


使用以下命令运行Vim:

noremap i :echom "This is not default behaviour"<CR>



输入命令:

vim -u NONE -U NONE -N -i NONE



期望的行为:Vim应该进入插入模式。如果不存在任何用户配置,将执行此操作。

观察到的行为:Vim打印出“这不是默认行为”

评论

在类似Unix的系统上,如果要执行以下操作:HOME = / dev / null vim -u NONE?

@muru不错的主意,可能值得添加作为答案,但这并不完美。您显然失去了例如:cd〜,但viminfo文件的默认位置也位于$ HOME中,这可能导致E138。我想创建一个新的空目录并将其用于$ HOME可能是最好的解决方案。

@muru我刚想到,如果您要设置$ HOME,那么大概也不需要指定-u NONE?

在这种情况下,/ tmp可能更好,这是我的第一个想法,但是后来我选择了/ dev / null作为黑洞。 ...或者类似HOME = $(mktemp -d)vim ....

如果不使用-u NONE,它不会读取系统vimrc吗?我想这取决于您需要的行为。

#1 楼

从Vim 8.0.1554开始(不幸的是,还没有Neovim),您可以使用vim --clean:help bugs建议使用此方法。

:help --clean文档:


类似于“ -u DEFAULTS -U NONE -i NONE”:
-文件和环境变量的初始化为
跳过
-设置'runtimepath'和'packpath'以排除主目录条目(-u DEFAULTS不会发生)。
-| defaults.vim |脚本已加载,这意味着
'nocompatible':使用Vim默认值
-否| gvimrc |脚本已加载
-不会读取或写入viminfo文件


评论


真好!这比弄乱$ HOME变量要简单得多。 Goodjob Vim开发人员。并感谢您的回答!

–丰富
18年8月3日在8:44

--clean现在也可以在master上与neovim一起使用(github.com/neovim/neovim/commit/…,将包含在0.4.0中),但是不排除主目录。

–克里斯蒂安·克拉森
19年5月3日15:16



(但是,该补丁正在等待移植)

–克里斯蒂安·克拉森
19年5月3日在15:26

#2 楼

消除用户特定文件的一种方法是使用不同的$HOME值。为了不让任何东西被读取或写入(例如viminfo),可以使用/dev/null:创建一个临时文件夹,或使用现有的文件夹(例如viminfo):

HOME=/dev/null vim -u NONE


使用这样的/tmp,可能不需要$HOME,具体取决于管理员添加的内容到系统范围内的-u NONE。例如,在我管理的所有实验室系统上,我都添加了一个vimrc(由打包的Vim的默认/etc/vim/vimrc.local提供),该/etc/vim/vimrcnocompatible等也已设置,并且还具有syntax

评论


vim -i NONE禁止加载viminfo

–克里斯蒂安·布拉班特(Christian Brabandt)
16年1月13日在17:53

仅出于后人的缘故,我想指出的是,这是我接受的答案,直到在Vim中添加了--clean选项。

–丰富
20年8月6日在12:51

#3 楼

我不能回答太多,但是我没有提到一个要点,然后重新回答标题中的内容


我怎样才能让Vim忽略所有用户配置,就好像是刚安装的



有人建议使用vim -u NONEvim -u NORC

在某种程度上,这些准系统不仅仅是没有vimrc文件。当我键入“ i”时,它不会说“插入”。您可能希望它仍然说“插入”。如果以空白的vimrc文件启动vim,则会显示insert

,这是因为vim首先加载默认配置。

您可以将vim指向该默认文件以获取vimrc文件为空白的效果。检查是否具有/etc/vim/vimrc,并且可以执行vim -u /etc/vim/vimrc或在osx上执行,默认文件为/usr/share/vim/vicmrc

评论


我认为这正是vim --clean将为您做的。

–quemeraisc
19年5月3日,12:18

@quemeraisc vim --clean将加载defaults.vim。这个答案是指系统vimrc(请参阅:help system-vimrc。),我认为它不是由vim --clean加载的。

–丰富
19-09-18在11:05



@barlap:为避免与defaults.vim混淆(请参阅:help defaults.vim),最好在此答案中将默认配置的措辞更改为system vimrc。甚至更好,在答案中讨论两者!

–丰富
19-09-18在11:07



#4 楼

从Vim-FAQ 2.5:


2.5。我在Vim中遇到“ xyz”(某些)问题。如何确定我的安装程序或Vim是一个
问题? /我是否在Vim中发现错误?

首先,您需要找出错误是在实际的
运行时文件中还是在与Vim一起分发的任何插件中,或者是否是
是.vimrc
或.gvimrc中任何配置选项的简单副作用。因此,首先,像这样启动vim:

vim -u NONE -U NONE -N -i NONE


这将以不兼容模式(-N)启动Vim,而不读取您的
viminfo文件(-i NONE) ,而不读取任何配置文件(-u
NONE表示不读取.vimrc文件,-U NONE表示不读取.gvimrc
文件)甚至插件。


评论


尽管出现在FAQ中,但由于问题中提到的原因,这实际上不起作用。

–丰富
16年1月13日在17:57

@Rich从您对问题的评论中:确保我所看到的行为均不是由用户配置引起的-然后看来您正在尝试执行本FAQ中所解释的内容。我已经重新阅读了您的问题,但仍然不明白您提到的原因是什么。

–mMontu
16年1月13日18:00



我确实确实在尝试完全按照FAQ中的说明进行操作。但是由于runtimepath设置,它提供的解决方案不起作用。

–丰富
16年1月13日在18:06



运行时路径到底有什么问题?似乎是此选项的默认设置,如:help rtp中所述。这个值如何影响您的测试?

–mMontu
16年1月13日在18:41



@Rich我的意思是,打开文件类型检测后,与全新安装相比有什么区别吗?

–mMontu
16年1月13日在19:01