8

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

4

5 回答 5

7

只需将一个虚拟的 .vimrc 放入 ~ 中,只需一行:

source ~/path/to/real/vimrc  

奇迹般有效

于 2013-02-27T18:59:50.117 回答
6

也许将您的.vimrcto~/.vim/和符号链接到 home 就可以了?

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

于 2010-10-10T08:48:19.130 回答
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修改了“运行时路径”,那么影响运行哪些插件就太晚了。这最常发生在病原体中,在这种情况下,可以通过在末尾添加以下行来解决它~/.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因此如果它们的内容不想要,则可能需要删除它们。

于 2013-01-22T00:15:05.437 回答
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
于 2012-01-31T18:59:32.770 回答
1

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

于 2010-10-10T07:53:11.930 回答