如何更改 .vimrc 和 .vim 的位置

11
如何更改 .vim 文件夹和 .vimrc 文件的位置,以便可以使用两个(或多个)独立版本的 vim?是否有一种方法可以在从源代码编译 vim 时进行配置?(也许在 feature.h 中有一个条目?)
为什么要这样做? 我必须在使用 Python2 和 Python3 的项目上工作,因此我希望拥有两个独立的 vim 设置,具有不同的插件、配置等。此外,一个版本必须使用 +python 编译,另一个版本必须使用 +python3。

如果你要安装另一个版本的 Vim,请使用 altinstall 安装到 /usr/local/bin。你也可以使用 $ vim -u path/to/.vimrc 来定义另一个 .vimrc。不确定你会如何处理 .vim 目录或 .viminfo - timss
好的,我忘了提到我已经找到了如何使用“-u”命令启动另一个.vimrc的vim。但这不会影响.vim文件夹。 在新的.vimrc中更改vim运行时路径是行不通的,因为如果您尝试加载插件,您将会收到错误提示。 - crs
你可以同时拥有 +python+python3 - romainl
编译支持Python2和3的Vim并不是问题。但如果你想为每个Python版本使用不同的插件,那就相当麻烦了。 - crs
4个回答

10
您可以通过-u vimrc-file命令行参数来影响使用哪个~/.vimrc文件。由于这是第一次初始化,您可以通过修改其中的'runtimepath'来影响从哪里加载插件(即.vim位置)。
请注意,对于不同版本的Python文件进行编辑时,这些设置(如缩进、完成来源等)将从每个缓冲区单独源的filetype插件中获取,因此甚至可以在同一个Vim实例中编辑Python 2和3。(除非有一些定义全局内容的糟糕编写的插件)。因此,一些缓冲区配置(一些:autocmd在项目路径上,或一些更复杂的解决方案(搜索这里的localrc插件或有关project vimrc的问题))可能已经足够了。
另请注意,当Python解释器(您只需要为基于Python的插件和一些交互式:py命令而不是编辑Python时)使用动态链接(至少在Windows上默认情况下),您可以在同一个Vim二进制文件中拥有Python 2和3支持。

1
如果您修改了“runtimepath”,则会出现一些奇怪的错误消息,例如:在处理/home/user/vimp2/vimrc时检测到错误: 行4: E117:未知函数:pathogen#infect因此,我希望拥有完全独立的vim版本,具有单独的配置文件和文件夹。 - crs
2
在你的(工作中的).vimrc文件的第二行中输入“set runtimepath”(无选项)。重新启动vim,它会显示类似于“runtimepath =〜/ .vim,/ opt / local / share / vim / vimfiles,/ opt / local / share / vim / vim74,/ opt / local / share / vim / vimfiles / after,〜/ .vim / after”的内容。将其用作新的runtimepath,您将不会遇到任何问题。 - Orwellophile

4
我认为最简单的解决方案就是让pathogen代替你处理运行时路径。 pathogen#infect()可以接受指定不同目录的路径,你可以用它来指定你的bundle目录。
如果你的.vim目录看起来像这样:
.vim/
    autoload/
        pathogen.vim
    bundle_python2/
        <plugins>
    bundle_python3/
        <other plugins>

然后在你的 Vim 配置文件中,添加针对 Python 2 的代码:

call pathogen#infect('bundle_python2/{}')

对于Python 3特定的东西,您需要:
call pathogen#infect('bundle_python3/{}')

由于每个插件文件夹实际上只是一个.vim文件夹,因此您可以将与Python相关的配置放在相应bundle的文件夹中,并假装它是.vim
这种结构还有一个额外的好处,如果您觉得需要同时更改两个配置,可以通过将通用内容放入.vim来实现。
如果您感觉需要使用Pathogen传递多个bundle目录,以便共享插件而不重复文件,只需通过将多个路径传递给pathogen#infect('bundle/{}', 'bundle_python3/{}')来实现。
完成所有操作后,您只需为vim创建别名,以调用正确的vimrc文件。

2
我找到了一种方法来实现这个! 你可以创建一个假的$HOME,其内容只是.vim文件夹和.vimrc。然后,在运行vim时,将HOME环境变量设置为该文件夹,并在VimEnter上将其改回。
使用以下命令运行vim:
OLD_HOME="$HOME" HOME="$FAKE_HOME" vim

将以下内容添加到您的.vimrc文件中:

autocmd VimEnter * let $HOME = $OLD_HOME

在Windows上,您可以使用:
let $HOME = $HOMEDRIVE.$HOMEPATH

相反,无需存储旧的主目录。

这样做是可以的,但如果您在vimrc或任何插件中使用$HOME,它们将看到旧值,这可能会以某种方式影响它们。到目前为止,我还没有看到这种情况。


2
这是一个完全的黑客行为和一个非常糟糕的想法 - 很容易在神秘的方式下崩溃,长时间之后你已经忘记了你正在欺骗$HOME - OJFord

1
注意:我并不真正推荐这样做。
如果你真的非常想重新编译vim,以便使用不同的vimrc和不同的配置目录,请查看src/feature.h。
在该文件中搜索USR_VIMRC_FILE。取消注释并在此处放置您的vimrc的名称。这将更改默认的vimrc文件。
所以它应该看起来像这样。
#define USR_VIMRC_FILE "~/path/to/vimrc"

src/os_unix.hsrc/os_mac.h 中搜索 DFLT_RUNTIMEPATH。将所有的 ~/.vim 实例更改为您想要的任何文件夹。这应该设置 vim 搜索设置的默认运行时路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接