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

如何更改.vimrc和.vim的位置,vim,Vim,如何更改.vim文件夹和.vimrc文件的位置,以便使用两个(或更多)独立版本的vim?在从源代码处编译vim时,有没有办法配置它?(可能是feature.h中的条目?) 我为什么要做这样的事 我必须在使用python2和python3的项目上工作,因此我希望有两个独立的vim设置,具有不同的插件、配置等。此外,一个版本必须使用+python编译,另一个是+python3。您可以通过-u vimrc file命令行参数影响使用哪个~/.vimrc。由于这是第一次初始化,因此您可以通过修改其中的'

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

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

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

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


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

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

pathogen#infect()
可以采用指定不同目录的路径,您可以将这些路径用于捆绑目录

因此,如果您的
.vim
目录如下所示

.vim/
    autoload/
        pathogen.vim
    bundle_python2/
        <plugins>
    bundle_python3/
        <other plugins>
#define USR_VIMRC_FILE "~/path/to/vimrc"
对于Python3特定的东西,您应该

call pathogen#infect('bundle_python3/{}')
因为每个插件文件夹实际上只是一个
.vim
文件夹,所以您可以将特定于python的配置文件放在相应包的文件夹中,并假装它是
.vim

这种结构还有一个额外的好处,即如果您愿意,可以通过正常地在
.vim
中放置公共内容来同时更改这两种配置

如果您愿意,您还可以传递多个bundle目录,这样您就可以在不复制文件的情况下共享插件。您只需将多个路径传递到
病原体感染('bundle/{}',bundle\u python3/{}')


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

注意:我并不建议这样做

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

在该文件中搜索
USR\u VIMRC\u文件
。取消对其注释,并将VIMRC的名称放在此处。这将更改defualt VIMRC文件

所以应该是这样的

.vim/
    autoload/
        pathogen.vim
    bundle_python2/
        <plugins>
    bundle_python3/
        <other plugins>
#define USR_VIMRC_FILE "~/path/to/vimrc"
src/os\u unix.h
src/os\u mac.h
中搜索
DFLT\u运行时路径
。将
~/.vim
的所有实例更改为所需的任何文件夹。这应该设置vim搜索设置的默认运行时路径。

我找到了一种方法! 您只需创建一个伪$HOME,其内容仅为
.vim
文件夹和
.vimrc
。然后,在运行vim时,将HOME环境变量设置为该文件夹,并将其更改回
viminter

使用以下命令运行vim:

OLD_HOME="$HOME" HOME="$FAKE_HOME" vim
将此添加到您的
.vimrc

autocmd VimEnter * let $HOME = $OLD_HOME
在Windows上,您可以使用

let $HOME = $HOMEDRIVE.$HOMEPATH
插入,不需要存储旧房子


这是可行的,但是如果你在vimrc内部使用$HOME或者任何插件都会看到旧的值,这可能会对它们产生某种影响。到目前为止,我还没有看到它。

如果你要安装另一个版本,如果Vim使用altinstall to/usr/local/bin。你也可以使用
$Vim-u path/to/.vimrc
定义另一个
。不确定你会做什么我可以使用
.vim
目录或
.viminfo
来启动vim。不过,我忘了提一下,我已经知道如何使用“-u”命令使用另一个.vimrc启动vim。但是这不会影响.vim文件夹。使用新的.vimrc来更改vim运行时路径是行不通的,因为如果尝试加载插件,就会出现错误。Y你可以同时拥有
+python
+python3
。编译同时支持python2和python3的vim不是问题。如果你想为每个python版本使用不同的插件,这是一件非常痛苦的事情。如果你修改了“运行时路径”,你会得到一些奇怪的错误消息,比如:在处理/home/user/vimp2/vimrc:line时检测到错误4:E117:未知功能:病原体#感染,因此我希望使用单独的配置文件和-folders创建完全独立的vim版本。将
设置runtimepath
(无选项)作为(工作)中的第二行.vimrc文件。重新启动vim,它将显示类似于
runtimepath=~/.vim、/opt/local/share/vim/vimfiles、/opt/local/share/vim/vim/vim74、/opt/local/share/vim/vimfiles/after、~/.vim/after
。将其用作新的运行时路径,您将不会有任何问题。这是一个彻底的黑客攻击,而且是一个非常糟糕的主意——很容易以神秘的方式被攻破在您忘记您正在欺骗$HOME之后,ng将被取消。