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

时间:2013-06-03 19:01:53

标签: vim

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

为什么我要做这样的事情?: 我必须处理使用python2以及python3的项目,因此我希望有两个独立的vim设置,具有不同的插件,配置等。此外,一个版本必须用+ python编译,另一个版本用+ python3编译。

4 个答案:

答案 0 :(得分:8)

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

请注意,为了编辑不同版本的Python文件,这些设置(如缩进,完成源等)取自 filetype 插件,这些插件分别为每个缓冲区提供,因此应该可以甚至可以在同一个Vim实例中编辑Python 2和3。 (除非你有一些编写糟糕的插件来定义全局内容。)所以,为此,某种每缓冲区配置(项目路径上的一些:autocmd或更精细的解决方案(搜索 localrc) 插件或有关 project vimrc 的问题)已经足够了。

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

答案 1 :(得分:3)

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

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文件。

答案 2 :(得分:1)

注意:我不建议这样做。

如果你真的想重新编译vim,以便它使用不同的vimrc和不同的配置目录,请查看src/feature.h

在此文件中搜索USR_VIMRC_FILE。取消注释并在此处放置vimrc的名称。这将更改defualt vimrc文件。

所以看起来应该是这样的

#define USR_VIMRC_FILE "~/path/to/vimrc"

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

答案 3 :(得分:1)

我找到了办法! 你可以创建一个虚假的$ 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或任何插件将看到旧值,它可能会以某种方式影响它们。到目前为止,我还没有看到它。