将.vimrc放在vimfiles目录中

时间:2010-10-10 07:42:55

标签: version-control vim dotfiles

我希望将Vim和Emacs配置保留在版本控制之下,但我想要我的整个主文件夹(或者更确切地说,我这样做,但应该有3个单独的存储库)。使用Emacs很容易;如果~/.emacs不存在,则~/.emacs.d/init.el用作init文件。所以我可以在~/.emacs.d/中有一个单独的Git仓库。使用Vim,似乎.vimrc只能 存在于主文件夹中,而不是~/vimfiles(相当于~/.emacs.d)。 this是将.vimrc置于版本控制之下的最佳方式吗?

5 个答案:

答案 0 :(得分:7)

只需将一个虚拟的.vimrc放在〜中,只需一行:

source ~/path/to/real/vimrc  

像魅力一样工作

答案 1 :(得分:6)

.vimrc移至~/.vim/并将符号链接移至主页可能会有效吗?

其他更模块化的方法是将您的启动脚本移动到~/.vim/plugins/,也许在那里创建一个子目录,以及单个或多个init脚本:Vim在启动时会执行:runtime! plugin/**/*.vim

答案 2 :(得分:3)

正如@Progo在答案中建议的那样,~/.vimrc设置可以移动到~/.vim/plugin/00rc.vim等文件中的“插件”脚本中。

沿着这条路走下去时要记住几件事:

用户和插件都希望~/.vimrc中的设置在:help startup中所述的插件之前加载。 ~/.vim通常位于'runtimepath'中,但如果用户在~/.vim/plugin中有其他插件,.vimrc替换必须首先按字典顺序排列,以确保首先加载,~/.vim/plugin/00rc.vim }。

当vim启动过程从步骤3执行'执行Ex命令'(其中.vimrc将被读取;再次,请参阅:help startup)到步骤4'加载插件脚本',它运行:runtime! plugin/**/*.vim。此命令查看“runtimepath”以将文件与源匹配,然后开始获取它们。这意味着如果~/.vim/plugin/00rc.vim中的某些内容修改了'runtimepath',那么影响哪些插件运行就太晚了。这种情况最常见于pathogen,在这种情况下,可以通过将以下行添加到~/.vim/plugin/00rc.vim的末尾来解决此问题:

" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim

最后,(再次如:help startup中所述),如果~/.vimrc文件不存在,vim将搜索其他文件,例如~/.exrc,因此可能需要删除它们如果他们的内容是不需要的。

答案 3 :(得分:2)

向流程添加一个步骤,但我的vim设置中只有一个bash脚本deploy.sh

#!/bin/bash

if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
    echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
    mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
    echo "Already have ~/.vimrc symlink, we're good"
else
    echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
    ln -s ~/.vim/vimrc ~/.vimrc
fi

git submodule init
git submodule update

答案 4 :(得分:1)

您可以在版本控制中保留备份,并在需要时将其部署(即移动)到您的主目录。你可以编写一个简单的脚本来管理所有这些处理,所以至少透明地来回移动它似乎不是很烦人的工作。