如何更改.vim文件夹和.vimrc文件的位置,以便我可以使用两个(或更多)独立版本的vim?有没有办法在从源代码编译vim时配置它? (也许是feature.h中的一个条目?)
为什么我要做这样的事情?: 我必须处理使用python2以及python3的项目,因此我希望有两个独立的vim设置,具有不同的插件,配置等。此外,一个版本必须用+ python编译,另一个版本用+ python3编译。
答案 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.h
或src/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或任何插件将看到旧值,它可能会以某种方式影响它们。到目前为止,我还没有看到它。