11

如何更改 .vim 文件夹和 .vimrc 文件的位置,以便可以使用两个(或多个)独立版本的 vim?从源代码编译vim时有没有办法配置它?(也许是 feature.h 中的一个条目?)

我为什么要做这样的事情?:我必须在使用 python2 和 python3 的项目上工作,因此我想要两个独立的 vim 设置,具有不同的插件、配置等。此外,一个版本必须编译+python,另一个用+python3。

4

4 回答 4

10

您可以~/.vimrc通过-u vimrc-file命令行参数影响使用哪个。由于这是第一次初始化,因此您可以通过在其中进行修改来影响插件的加载位置(即.vim位置)'runtimepath'

请注意,对于编辑不同版本的 Python 文件,这些设置(如缩进、完成源等)取自文件类型插件,这些插件分别为每个缓冲区提供源,因此甚至应该可以在相同的 Vim 实例。(除非你有一些写得很糟糕的插件来定义全局的东西。)因此,某种类型的每个缓冲区配置(:autocmd项目路径上的一些 s,或者一些更复杂的解决方案(在此处搜索localrc插件或有关项目 vimrc的问题)可能已经足够了。

另请注意,当 Python 解释器(您只需要基于 Python 的插件和一些交互式:py命令,而不是用于编辑 Python)通过动态链接(至少在 Windows 上是默认值)编译时,您可以同时拥有在同一个 Vim 二进制文件中支持Python 2和3。

于 2013-06-03T19:25:53.380 回答
4

我认为最简单的解决方案就是让病原体为您处理您的运行时路径。

pathogen#infect()可以采用指定可用于捆绑目录的不同目录的路径。

所以如果你的.vim目录看起来像这样

.vim/
    autoload/
        pathogen.vim
    bundle_python2/
        <plugins>
    bundle_python3/
        <other plugins>

然后在你的一个 vimrc 中,你会拥有 python 2 特定的东西

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

对于 python 3 特定的东西,你会有

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

由于每个插件文件夹实际上只是一个.vim文件夹,因此您可以将特定于 python 的配置内容放在相应包的文件夹中,并假装它是一个.vim.

这种结构还具有额外的好处,如果您愿意,可以通过.vim正常放入常见的东西来同时更改两种配置。

如果您喜欢病原体,您还可以传递多个捆绑目录,这样您就可以在不复制文件的情况下共享插件。您只需将多个路径传递给pathogen#infect('bundle/{}', 'bundle_python3/{}')

完成这一切后,您可以为 vim 创建别名以调用正确的 vimrc 文件。

于 2013-06-03T22:58:30.480 回答
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

insetead,无需存放旧居。

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

于 2015-07-27T14:55:58.413 回答
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 搜索设置的默认运行时路径。

于 2013-06-03T23:24:15.920 回答