如何更改 .vim 文件夹和 .vimrc 文件的位置,以便可以使用两个(或多个)独立版本的 vim?从源代码编译vim时有没有办法配置它?(也许是 feature.h 中的一个条目?)
我为什么要做这样的事情?:我必须在使用 python2 和 python3 的项目上工作,因此我想要两个独立的 vim 设置,具有不同的插件、配置等。此外,一个版本必须编译+python,另一个用+python3。
如何更改 .vim 文件夹和 .vimrc 文件的位置,以便可以使用两个(或多个)独立版本的 vim?从源代码编译vim时有没有办法配置它?(也许是 feature.h 中的一个条目?)
我为什么要做这样的事情?:我必须在使用 python2 和 python3 的项目上工作,因此我想要两个独立的 vim 设置,具有不同的插件、配置等。此外,一个版本必须编译+python,另一个用+python3。
您可以~/.vimrc
通过-u vimrc-file
命令行参数影响使用哪个。由于这是第一次初始化,因此您可以通过在其中进行修改来影响插件的加载位置(即.vim
位置)'runtimepath'
。
请注意,对于编辑不同版本的 Python 文件,这些设置(如缩进、完成源等)取自文件类型插件,这些插件分别为每个缓冲区提供源,因此甚至应该可以在相同的 Vim 实例。(除非你有一些写得很糟糕的插件来定义全局的东西。)因此,某种类型的每个缓冲区配置(:autocmd
项目路径上的一些 s,或者一些更复杂的解决方案(在此处搜索localrc插件或有关项目 vimrc的问题)可能已经足够了。
另请注意,当 Python 解释器(您只需要基于 Python 的插件和一些交互式:py
命令,而不是用于编辑 Python)通过动态链接(至少在 Windows 上是默认值)编译时,您可以同时拥有在同一个 Vim 二进制文件中支持Python 2和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 文件。
我找到了一种方法来做到这一点!您可以创建一个假的 $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 或任何插件会看到旧值,它可能会以某种方式影响它们。到目前为止,我还没有看到它。
注意:我真的不建议这样做。
如果您真的想重新编译 vim 以使其使用不同的 vimrc 和不同的配置目录,请查看src/feature.h
在此文件中搜索USR_VIMRC_FILE
. 取消注释并将您的 vimrc 的名称放在这里。这将更改默认的 vimrc 文件。
所以它应该看起来像这样
#define USR_VIMRC_FILE "~/path/to/vimrc"
在内部src/os_unix.h
或src/os_mac.h
搜索DFLT_RUNTIMEPATH
。将所有实例更改~/.vim
为您想要的任何文件夹。这应该设置 vim 搜索设置的默认运行时路径。